datatable删除行

先列出正确的写法,如果你只想马上改错就先复制吧,如果你有时间想学习一下就继续看下面列出可能出错的可能性吧。1.如果只是想删除datatable中的一行,可以用DataRow的delete,但是必须

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

protected void deleteDataRow(int RowID,DataTable dt)  
    {  
        for (int i = dt.Rows.Count - 1; i >= 0; i--)  
        {  
            if (Convert.ToInt32(dt.Rows[i]["RowID"]) == RowID)  
                dt.Rows.RemoveAt(i);  
        }  
    }  /* 何问起 hovertree.com */

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

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

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

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

for (int i = 0, j = dt.Rows.Count; i < j; i++)  
        {  
            if (Convert.ToInt32(dt.Rows[i]["RowID"]) == RowID)  
                dt.Rows.RemoveAt(i);  
        }  /* 何问起 hovertree.com */

这个的错误在于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();

http://www.cnblogs.com/roucheng/p/csfetch.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea2021.1的激活码 3月最新注册码

    idea2021.1的激活码 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    66
  • 实验室管理系统数据库代码_实验室废液分类标准

    实验室管理系统数据库代码_实验室废液分类标准实验室设备管理系统SQL代码课程设计时的SQL代码,不是很完整,仅供参考。完整的实验室设备管理系统设计代码包括界面设计(使用的是C#)上传到了我的资源中。***界面截图***createdatabase实验室设备管理系统onprimary( name=’实验室设备管理_data’, filename=’E:\SqlServerData\实验室设备管理系统\实验室设备管理_data.mdf’, size=5MB, maxsize=100MB, filegrow

    2022年10月13日
    2
  • Trello使用体验之如何删除一个Board

    Trello使用体验之如何删除一个Board

    2021年9月1日
    69
  • Java学习必备书籍推荐终极版!

    Java学习必备书籍推荐终极版!很早就想把JavaGuide的书单更新一下了,昨晚加今天早上花了几个时间对之前的书单进行了分类和补充完善。虽是终极版,但一定还有很多不错的Java书籍我没有添加进去,会继续完善下去。希望这篇文章对你有帮助,不要再无书可看。欢迎在留言区补充你觉得不错的Java方向的书籍或者计算机基础必看的书籍!你也可以直接到Github给我提PR,参与这个书单的完善。Java基础《HeadFir…

    2022年6月17日
    33
  • 领导力与管理能力的层次划分原则

    领导力与管理能力的层次划分原则瑞通讲师 刘通在数字化转型浪潮的当下 每个企业都在强调领导力和管理能力的打造 因为只有管理者具备领导力 企业或组织才能明确要去哪里 而有效的管理能力则为组织的航行保驾护航 确保我们真正能够到达理想的彼岸 领导力是 做正确事的能力 Dotherightth 而管理能力是 正确的做事的能力 Dothethingri 故作为一个管理者 你需要具备领导力和管理能力 二者缺一不可 我们可以从如下 5 个层次的领导者特征来品读如何成为一个好的领导者或管理者 领导者的第一个层次 能干的

    2025年8月10日
    4
  • (实例篇)LNMP 1.4一键安装包,安装教程

    (实例篇)LNMP 1.4一键安装包,安装教程

    2021年10月8日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号