我的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();
}
问题在于:
ds.Tables[0].Rows[rowindex].Delete();
仅删除该行中的内容。当我查看数据集时,它显示一个空行。
有没有办法可以删除整行,而不显示空行?
答案 0 :(得分:10)
尝试拨打
ds.AcceptChanges()
在row.Delete()之后。
答案 1 :(得分:9)
如果要删除单个数据行,则RemoveAt是更容易的选项:
ds.Tables[0].Rows.RemoveAt(rowIndex);
根据{{3}}:,奥斯卡的回答也是正确的
删除行后,该行中的所有数据都将丢失。您还可以调用DataRow类的Delete方法来标记要删除的行。调用RemoveAt与调用Delete然后调用AcceptChanges相同。