尝试从DataTable删除行时出现问题

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

要回复问题请先登录注册