简体   繁体   English

通过Ajax插入数据后重新绑定Gridview

[英]Rebinding of Gridview after data insert via ajax

I have a simple HTML page in .aspx and I am calling a static web method from a .cs file. 我在.aspx中有一个简单的HTML页面,并且正在从.cs文件中调用静态Web方法。

Now my HTML .aspx page has a Gridview which is loading on page load. 现在,我的HTML .aspx页面具有一个Gridview,它会在页面加载时加载。

protected void Page_Load(object sender, EventArgs e)
{
    GridviewBind();
} 

protected void GridviewBind()
{
    using (SqlConnection con = new SqlConnection(connString))
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("Select name,cost,description FROM products", con);
        SqlDataReader dr = cmd.ExecuteReader();
        GridView1.DataSource = dr;
        GridView1.DataBind();
        con.Close();
    }
}

What I want is to refresh the gridview after the the ajax call for webmethod (which is inserting new data in product table). 我想要的是在web方法的ajax调用(在product表中插入新数据)之后刷新gridview。

[WebMethod]
public static string SaveProduct(string name, string desc, float cost)
{
    string msg = string.Empty;
    string connString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
    SqlConnection conn = null;
    try
    {
        conn = new SqlConnection(connString);
        conn.Open();

        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO products(name,description,cost) Values (@name,@description,@cost)";
            cmd.Parameters.AddWithValue("@name", name);
            cmd.Parameters.AddWithValue("@description", desc);
            cmd.Parameters.AddWithValue("@cost", cost);

            int rowsAffected = cmd.ExecuteNonQuery();
            if (rowsAffected == 1)
            {
                msg = "Poduct Saved Successfully";

            }
            else
            {
                msg = "Something Went Wrong...Please Try again later!!!";

            }

        }
    }
    catch (Exception e)
    {
        msg = "Something Went Wrong...Please Try again later!!!";
    }

    return msg;
}

Ajax call: Ajax呼叫:

 $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "Products.aspx/SaveProduct",
                    data: "{'name':'" + name+ "','desc':'" + desc+ "','cost':'" + cost+ "'}",
                    dataType: "json",
                    success: function (data) {
                        alert(data);
                        clear();
                    },
                    error: function (data) {
                        alert(data);
                    }
                });

Call your binding function GridviewBind() again in your if condition for successful insert. if成功插入条件,请再次调用绑定函数GridviewBind() Like this : 像这样 :

if (rowsAffected == 1)
{
   msg = "Poduct Saved Successfully";
   GridviewBind(
}

Hope this helps. 希望这可以帮助。

Use UpdatePanel In GridView. 在GridView中使用UpdatePanel。

protected void Page_Load(object sender, EventArgs e)
{
       if (!IsPostBack)
        {
            GridviewBind();
        }
}


<asp:UpdatePanel ID="updatepnl" runat="server">
   <ContentTemplate>
        ---Put Your Grid View Code---
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="btnSubmit" />      
    </Triggers>
</asp:UpdatePanel>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM