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();
}
我有一个带有图像按钮的简单 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();
}