更新数据库后GridView不更新
我有一个GridView。我显示所有用户在系统中这GV,我有一个按钮,通过更新表中删除列删除用户1.更新数据库后GridView不更新
<asp:GridView ID="GridView1" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging"
PageSize="20" runat="server" OnRowCommand="GridView1_OnRowCommand"
DataKeyNames="Id, Email" EnableViewState="false" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="buttonDelete" runat="server" CommandName="Remove" Text="Delete"
CommandArgument='<%# Eval("Id") + ";" +Eval("Email")%>'
OnClientClick='return confirm("Are you sure you want to delete this user?");' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="FirstName" HeaderText="First Name" />
<asp:BoundField DataField="LastName" HeaderText="Last Name" />
<asp:BoundField DataField="Email" HeaderText="Email" />
<asp:BoundField DataField="Status" HeaderText="Status" />
<asp:BoundField DataField="Location" HeaderText="Location" />
</Columns>
</asp:GridView>
protected void GridView1_OnRowCommand(object sender, GridViewCommandEventArgs e)
{
string cmdName = e.CommandName;
string[] commandArgs = e.CommandArgument.ToString().Split(new char[] { ';' });
string UserRowID = commandArgs[0];
string Email = commandArgs[1];
string sql = "UPDATE USERS " +
"SET [Deleted]= 1" +
"WHERE ROWID= " + UserRowID;
DataTable table = PublicClass.ExeSql_Table(sql, "Utility");
GridView1.DataBind();
}
当我点击删除,它更新数据库但它不会从GV中删除该行。我需要刷新页面或点击两次以删除该行。我怎样才能做到这一点点击一下?
你只需要重新加载数据源,并将其绑定到GridView:
DataTable table = PublicClass.ExeSql_Table(sql, "Utility");
GridView1.DataSource = table; // <-- you've forgotten this
GridView1.DataBind();
当您删除该行时,请使用数据重新绑定您的网格。
试过了。如果我重新绑定数据,它将删除GV本身。 GridView1.DataSource = table; GridView1.DataBind(); – Ram
不,你做错了。在绑定之前,您需要再次从数据库中选择数据。 –
查看Tim的答案。他解释得很好。 –
指定按需场你的LinkButton的 “buttonDelete”
例子:
OnCommand = "Delete_Record"
而写以下代码在aspx.cs中
protected void Delete_Record(object sender, CommandEventArgs e)
{
GridView1.DataSource = table;
GridView1.DataBind();
}
只需像下面这些家伙说的那样再次进行搜索。 – felipekm