c# asp net updatepanel 导致页面刷新

c# asp net updatepanel cause page refresh

我有一个带有图像按钮的简单 gridview,用于更新 gridview 列之一的值,问题是每当我单击图像按钮时,它会刷新整个页面,我希望 gridview 只用更新后的值刷新,我尝试使用 UpdatePanel 但它也会刷新整个页面, 我们将不胜感激。

aspx代码:

<form id="form1"  runat="server" >
 <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:GridView ID="GridView1"  CssClass="datatable"  runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" PageSize="5">
                    <Columns >
                        <asp:BoundField DataField="req_id" HeaderText="request ID" SortExpression="req_id" />
                        <asp:BoundField DataField="req subject" HeaderText="request subject" SortExpression="req_subject" /> 
                        <asp:TemplateField>
                        <ItemTemplate>
                                <asp:ImageButton ID="Button_update" runat="server" CommandArgument='<%# Bind("req_id") %>' CssClass="yourCssClassIsNeedIt" ImageUrl="Images/under.png" OnClick="btn_under" UseSubmitBehavior="false" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </ContentTemplate>
        </asp:UpdatePanel>
 </form>

aspx.cs代码:

protected void Button_update(object sender, ImageClickEventArgs e)
{

    using (SqlConnection sqlCon = new SqlConnection(@"Data Source= DESKTOP-U9437PU; initial Catalog = Mydb; Integrated Security =True;"))
    {
        sqlCon.Open();

       string sql = "update requests_table set stat_id = '2' where req_id ='" 5 "'";
       SqlCommand cmd1 = new SqlCommand(sql, sqlCon);
       cmd1.ExecuteNonQuery();
       cmd1.Dispose();
       sqlCon.Close();
    }
    GridView1.DataBind(); 

}

试试这个:

<asp:ImageButton ID="Button_update" runat="server" CommandArgument='<%# Bind("req_id") %>' CssClass="yourCssClassIsNeedIt" ImageUrl="Images/under.png" OnClick="btn_under" UseSubmitBehavior="false" OnClientClick="javascript:void(0);"  />

还有这个

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">

您需要设置UpdateMode Conditional:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
     <Triggers>        
        <asp:AsyncPostBackTrigger ControlID="Button_update" EventName="Click" />    
    </Triggers>
    <ContentTemplate>
        <asp:GridView ID="GridView1"  CssClass="datatable"  runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" PageSize="5">
            <Columns >
                <asp:BoundField DataField="req_id" HeaderText="request ID" SortExpression="req_id" />
                <asp:BoundField DataField="req subject" HeaderText="request subject" SortExpression="req_subject" /> 
                <asp:TemplateField>
                <ItemTemplate>
                        <asp:ImageButton ID="Button_update" runat="server" CommandArgument='<%# Bind("req_id") %>' CssClass="yourCssClassIsNeedIt" ImageUrl="Images/under.png" OnClick="btn_under" UseSubmitBehavior="false" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

那么你应该按如下方式调用 UpdatePanel1.Update();

protected void Button_update(object sender, ImageClickEventArgs e)
{

    using (SqlConnection sqlCon = new SqlConnection(@"Data Source= DESKTOP-U9437PU; initial Catalog = Mydb; Integrated Security =True;"))
    {
        sqlCon.Open();

       string sql = "update requests_table set stat_id = '2' where req_id ='" 5 "'";
       SqlCommand cmd1 = new SqlCommand(sql, sqlCon);
       cmd1.ExecuteNonQuery();
       cmd1.Dispose();
       sqlCon.Close();
    }
    GridView1.DataBind(); 
    UpdatePanel1.Update();

}