前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >datatable删除行

datatable删除行

作者头像
全栈程序员站长
发布2022-07-15 15:30:43
2.6K0
发布2022-07-15 15:30:43
举报

大家好,又见面了,我是全栈君

先列出正确的写法,如果你只想马上改错就先复制吧,

如果你有时间想学习一下就继续看下面列出可能出错的可能性吧。

  1.如果只是想删除datatable中的一行,可以用DataRow的delete,但是必须要删除后让DataTable知道,所以就要用到.AcceptChanges()方法,原因是这种删除只是标识性删除,就像我们通常在数据库中用到的IsDelete字段。

  2.彻底删除就要用到datatable的.Rows.Remove(DataRow dr)方法,同理也只是删除一行可以,如果要循环删除请继续往下看。

  3.循环彻底删除就要用.Rows.RemoveAt(int index)方法,所以如果你是foreach的爱好者,在此请你换换口味,还有如果你是for的i++的忠实fans也希望你能换个思维。先看一下上面程序的正向写法(错误的,不可用)

这个的错误在于datatable的RemoveAt()会在删除后更新dataTable的index,所以你要删除的index可能已经不是你的符合Convert.ToInt32(dt.Rows[i][“RowID”]) == RowID的index了,甚者还会抛出异常,说你访问的index不存在。

  所以要从DataTable的下面往上查找删除,这样即使这行符合条件被删除了,上面的行依旧不受影响。

说了这么多,不知道你明白了吗?其实现在写这种文章显得有点”弱智”,技术学多了,越来越觉得自己的基础不够扎实,希望通过在此记录一下可以督促一下自己,也希望能给初学者带去丝丝帮助。

http://hovertree.com/menu/csharp/

操纵dataset 在DataSet中DataRow是其所有数据的基本存放位置,它主要是由一个值数组组成,代表DataTable单独一行。 DataRow中主要包括一下几种信息:1、行中每一列的当前值,2、行中每一列的原始值,3、行状态,4、父行与子行间的链接

初始化一个DataRow: DataTable dataTable=dataSet.Tables[0]; DataRow newRow=dataTable.NewRow(); //用dataTable生成DataRow可以利用dataTable里面的模式 dataTable.Rows.Add(newRow);

删除行: DataTable.Rows.Remove(行实例); DataTable.Rows.RemoveAt(行号); DataRow.Delete(); //行自身移除

读写DataRow的值: row[“列名”],row[列号]均可引用其中的一个属性 DataColumn a=dataTable.Columns(“列名”); //可以获得一个列

对行进行批处理更改: BeginEdit()开始更改,EndEdit()结束更改,同时将更改结果写入DataSet,CancelEdit(),取消更改 例如: row.BeginEdit(); 对row进行更改 row.EndEdit();

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/120490.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档