更新数据库后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中删除该行。我需要刷新页面或点击两次以删除该行。我怎样才能做到这一点点击一下?

+0

只需像下面这些家伙说的那样再次进行搜索。 – felipekm

你只需要重新加载数据源,并将其绑定到GridView:

DataTable table = PublicClass.ExeSql_Table(sql, "Utility"); 
GridView1.DataSource = table; // <-- you've forgotten this 
GridView1.DataBind(); 

当您删除该行时,请使用数据重新绑定您的网格。

+0

试过了。如果我重新绑定数据,它将删除GV本身。 GridView1.DataSource = table; GridView1.DataBind(); – Ram

+2

不,你做错了。在绑定之前,您需要再次从数据库中选择数据。 –

+2

查看Tim的答案。他解释得很好。 –

指定按需场你的LinkBut​​ton的 “buttonDelete”

例子:

OnCommand = "Delete_Record" 

而写以下代码在aspx.cs中

protected void Delete_Record(object sender, CommandEventArgs e) 
{ 
     GridView1.DataSource = table; 
     GridView1.DataBind();  
}