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

时间:2022-07-31 02:57:08 

原因如下:

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");
}
}
标签:datatable
0
投稿

猜你喜欢

  • Idea2020.2创建JavaWeb项目(部署Tomcat)方法详解

    2023-11-02 13:29:52
  • IntelliJ IDEA像Eclipse一样打开多个项目的图文教程

    2022-03-14 05:31:40
  • Java设计模式之命令模式

    2022-06-17 22:49:07
  • 详解如何把cmd黑窗口把java文件打包成jar

    2021-08-09 16:04:39
  • Mybatis日志参数快速替换占位符工具的详细步骤

    2023-09-30 21:29:36
  • Android获取手机系统版本等信息的方法

    2023-02-05 20:36:08
  • 详解@ConfigurationProperties实现原理与实战

    2023-11-24 05:19:26
  • 详解java中保持compareTo和equals同步

    2023-07-20 12:20:53
  • springboot前端传参date类型后台处理的方式

    2023-04-12 16:47:35
  • springboot整合mybatis plus与druid详情

    2022-07-31 14:22:14
  • Java实现聊天室界面

    2023-12-15 10:43:32
  • MyBatis执行Sql的流程实例解析

    2022-06-12 19:43:42
  • mybatis的if判断integer问题

    2022-12-23 20:15:41
  • java操作json对象出现StackOverflow错误的问题及解决

    2023-03-04 20:06:14
  • 关于java数组与字符串相互转换的问题

    2021-08-08 18:50:31
  • 使用 BenchmarkDotNet 对 C# 代码进行基准测试

    2023-06-25 00:38:49
  • Android实现腾讯新闻的新闻类别导航效果

    2023-07-29 04:17:46
  • C#显示文件夹下所有图片文件的方法

    2021-11-25 23:50:10
  • Java 关于递归的调用机制精细解读

    2023-01-17 04:42:41
  • Java由浅入深带你了解什么是包package

    2022-04-17 02:33:39
  • asp之家 软件编程 m.aspxhome.com