欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# datatable 不能通过已删除的行访问该行的信息处理方法

程序员文章站 2023-12-09 23:39:34
原因如下: delete()之后需要datatable.acceptechanges()方法确认完全删除,因为delete()只是将相应列的状态标志为删除, 还可以通过da...
原因如下:

delete()之后需要datatable.acceptechanges()方法确认完全删除,因为delete()只是将相应列的状态标志为删除,
还可以通过datatable.rejectchanges()回滚,使该行取消删除。

如果要彻底删除datarow,需要delete()和acceptechanges()方法同时使用,或者采用datatable.rows.removeat(i)方法直接删除,
其中i表示行索引,还有一个就是datatable.rows.remove(datarow dr)删除指定行。

不过使用datatable.rows.removeat(i)要注意,如果连续使用datatable.rows.removeat(0);datatable.rows.removeat(1);
这时并不是删除了原表中的0,1行,而是删除0行后,原来的1行就变成了0行,所以datatable.rows.removeat(1)实际删除的是原表的2行。
所以还是要慎用datatable.rows.removeat(i),若要删除多行,可以连续用delete(),然后采用acceptechanges()方法确认删除。

解决方案实例:

复制代码 代码如下:

list<string> lst = new list<string>();
for (int i = 0; i < _table.rows.count; i++)
{
if (_table.rows[i].rowstate!=datarowstate.deleted)
{
lst.add(_table.rows[i]["i_sl"].tostring() == "0" ? "false" : "true");
}
}