C# datatable 不能通过已删除的行访问该行的信息处理方法
2012-11-29 20:05
1101 查看
原因如下:
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");
}
}
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");
}
}
您可能感兴趣的文章:
相关文章推荐
- C# datatable 不能通过已删除的行访问该行的信息处理
- datatable 不能通过已删除的行访问该行的信息处理
- C# datatable 不能通过已删除的行访问该行的信息处理
- C# datatable 不能通过已删除的行访问该行的信息处理
- 删除datatable的行后,出现“不能通过已删除的行访问该行的信息”的错误,即DeletedRowInaccessibleException
- C# datatable 不能通过已删除的行访问该行的信息处理
- C# DataTable不能通过已删除的行访问该行的信息
- 异常详细信息: 不能通过已删除的行访问该行的信息
- “不能通过已删除的行访问该行的信息。”错误原因
- 不能通过已删除的行访问该行的信息。
- “不能通过已删除的行访问该行的信息。”错误原因
- DataSet删除行不能通过已删除的行访问该行的信息
- SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据
- SQL2005错误:"已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行. "解决方法
- C# 通过ImportNode AppendChild方法合并XmlDocument,XML转为DataTable
- C#在DataTable中根据条件删除某一行的实现方法
- sharepoint2010不能通过ip地址或localhost访问组件和自定义内容的解决方法
- “不 能通过已删除的行访问该行的信息。”错误原因
- C#两个DataTable拷贝问题:该行已经属于另一个表的解决方法
- JBoss AS 4.2不能通过IP地址访问的解决方法