4

我的网格视图上有一个删除按钮。单击删除按钮后,该行应从会话中完全删除。我目前正在执行以下操作:

protected void gvMainLog_RowCommand(Object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Remove")
        {

            GridViewRow rowSelect = (GridViewRow)(((Button)e.CommandSource).NamingContainer);
            int rowindex = rowSelect.RowIndex;

            DataSet ds =  ((DataSet)Session["old"]);

            ds.Tables[0].Rows[rowindex].Delete();

            Session["old"] = ds;

            gvMainLog.DataSource = Session["old"];
            gvMainLog.DataBind();

        }

问题是:

ds.Tables[0].Rows[rowindex].Delete();

仅删除该行中的内容。当我查看数据集时,它显示一个空行。

有没有办法可以删除整行而不显示空行?

4

2 回答 2

12

试着打电话

ds.AcceptChanges() 

在 row.Delete() 之后。

于 2013-08-27T16:48:22.420 回答
11

如果要删除单个数据行,RemoveAt 是更简单的选项:

ds.Tables[0].Rows.RemoveAt(rowIndex);

根据MSDN 上 RemoveAt的评论,奥斯卡的回答也是正确的:

删除一行后,该行中的所有数据都将丢失。您还可以调用 DataRow 类的 Delete 方法来标记要删除的行。调用 RemoveAt 与调用 Delete 然后调用 AcceptChanges 相同。

于 2013-08-27T16:50:03.923 回答