Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过ajax插入数据后重新绑定Gridview_C#_Asp.net_Gridview - Fatal编程技术网

C# 通过ajax插入数据后重新绑定Gridview

C# 通过ajax插入数据后重新绑定Gridview,c#,asp.net,gridview,C#,Asp.net,Gridview,我在.aspx中有一个简单的HTML页面,我正在从.cs文件调用一个静态web方法 现在,我的HTML.aspx页面有一个Gridview,它正在页面加载中加载 protected void Page_Load(object sender, EventArgs e) { GridviewBind(); } protected void GridviewBind() { using (SqlConnection con = new SqlConnection(connStrin

我在.aspx中有一个简单的HTML页面,我正在从.cs文件调用一个静态web方法

现在,我的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();
    }
}
我想要的是在ajax调用webmethod(在product表中插入新数据)之后刷新gridview

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);
                    }
                });

如果要成功插入,请在
条件中再次调用绑定函数
GridviewBind()
。像这样:

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

希望这有帮助。

在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>
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
GridviewBind();
}
}
---把你的网格视图代码---

实际上gridview是一个非静态成员,而webmethod是静态的,因此它不能访问该方法。我还尝试创建对象,但它在GridView1.DataSource=dr处抛出Exception;在这种情况下,一种选择是编写整个代码,或者为绑定函数本身创建一个静态方法。那么,将同一个函数复制为静态函数?无意冒犯,但这不是个坏主意吗?是的。它将带来代码重复。有什么硬核需要将
保存为静态的方法吗?实际上我对ASP.Net不太了解,因为调用ajax我使用的方法和我在教程中读到的相同。非静态web方法在这里有效吗?因此,我应该使用??或者我必须在UpdatePanel中包装我的GridView??对不起。。。我不懂,因为我对.net的知识不多。我正在使用。。。那你有什么建议。我把它放在哪里了。请再详细说明一下。谢谢,试试看。
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>