0

私はGridViewを持っています。この GV でシステム内のすべてのユーザーを表示しています。テーブルの削除された列を 1 に更新してユーザーを削除するボタンがあります。

<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 から行が削除されません。行を削除するには、ページを更新するか、2 回クリックする必要があります。ワンクリックでどうやってそれを行うことができますか?

4

3 に答える 3

6

行を削除するときは、グリッドをデータで再バインドします。

于 2012-10-17T19:35:27.043 に答える
6

DataSource を再度読み込み、GridView にバインドするだけです。

DataTable table = PublicClass.ExeSql_Table(sql, "Utility");
GridView1.DataSource = table; //  <-- you've forgotten this
GridView1.DataBind();
于 2012-10-17T19:36:12.773 に答える
0

リンクボタン「buttonDelete」でOnCommandフィールドを指定します

例 :

OnCommand = "Delete_Record"

aspx.cs に次のコードを記述します。

  protected void Delete_Record(object sender, CommandEventArgs e)
{
       GridView1.DataSource = table; 
       GridView1.DataBind();    
}
于 2012-10-17T19:38:24.403 に答える