完全从数据集中删除行

Cod*_*nja 4 c# asp.net session dataset visual-studio-2010

我的gridview上有一个删除按钮.在单击"删除"按钮时,应该从会话中完全删除该行.我目前正在做以下事情:

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();

        }
Run Code Online (Sandbox Code Playgroud)

问题是:

ds.Tables[0].Rows[rowindex].Delete();
Run Code Online (Sandbox Code Playgroud)

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

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

Osc*_*car 12

试着打电话

ds.AcceptChanges() 
Run Code Online (Sandbox Code Playgroud)

在row.Delete()之后.


Use*_*ser 11

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

ds.Tables[0].Rows.RemoveAt(rowIndex);
Run Code Online (Sandbox Code Playgroud)

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

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