Deleting a row completely from a dataset

笑着哭i 提交于 2020-01-03 16:52:22

问题


I have a remove button on my gridview. On Clicking the remove button , the row should be completely removed from the session. I am currently doing the following :

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

        }

The problem is that :

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

removes only the content in that row. When I look at the dataset , it shows an empty row.

Is there a way I can remove the entire row, without it showing an empty row ?


回答1:


Try calling

ds.AcceptChanges() 

after row.Delete().




回答2:


If you want to remove a single data row, RemoveAt is the easier option:

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

Oscar's answer is also correct, according to the remarks for RemoveAt on MSDN:

When a row is removed, all data in that row is lost. You can also call the Delete method of the DataRow class to just mark a row for removal. Calling RemoveAt is the same as calling Delete and then calling AcceptChanges.



来源:https://stackoverflow.com/questions/18471189/deleting-a-row-completely-from-a-dataset

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!