从数据集中完全删除一行

本文关键字:一行 删除 数据 数据集 集中 | 更新日期: 2023-09-27 18:29:16

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

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

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

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

从数据集中完全删除一行

尝试调用

ds.AcceptChanges() 

行之后。Delete()。

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

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

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

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