如何解决尝试从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()。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。