尝试从DataTable中删除行时出现问题
本文关键字:问题 删除行 DataTable | 更新日期: 2023-09-27 17:50:26
我有一个数据表浮动在会话变量,这是绑定到GridView。
我已经在GridView中编写了一个Delete按钮,它调用了一个方法来删除该行,如下所示
private void DeleteRecordByID(int ID)
{
DataTable dt = (DataTable)Session["tempPermissions"];
DataRow rowDelete = dt.Rows[ID];
dt.Rows.Remove(rowDelete);
}
我有两个测试记录坐在我的数据表从数据库加载。
我的问题是,当我点击删除记录,我得到以下错误
System.IndexOutOfRangeException: There is no row at position 22.
即使在DataTable中有一条ID为22的记录…
有人知道为什么会这样吗?
索引器期望得到该行的索引,而不是ID。
你的行可以是
1
15
29
31
但是索引只有0到3。
在数据表中查找行有几种方法,从数据表的内置方法到使用LINQ。以数据表为中心的方法是在表上定义一个主键列,例如
DataColumn idColumn = dt.Columns["ID"];
dt.PrimaryKey = new[] { idColumn };
这允许您使用DataTable.Rows.Find(object key)
方法来检索您的行。
DataRow row = dt.Rows.Find(22);
如果给定的键不存在行,结果将是null
。因此,在对输出执行任何操作之前,请对null进行验证。
请注意,您可能还需要在删除后执行GridView.DataBind()。