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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java8 list.sort 排序

    java8 list.sort 排序//按照List中对象的id属性升序list.sort(Comparator.comparing(User::getId))//按照List中对象的id属性降序list.sort(Comparator.comparing(User::getId).reversed());//多个条件升序list.sort(Comparator.comparing(User::getId).thenComparing(User::getDeId));//id升序,deId降序

    2022年8月12日
    7
  • python京东自动签到领金豆_github京东自动签到

    python京东自动签到领金豆_github京东自动签到一.介绍PhantomJS是一个基于WebKit的JavaScriptAPI,它使用QtWebKit作为它核心浏览器的功能,使用WebKit来编译解释执行JavaScript代码,任何你可以在基于WebKit浏览器做的事情,它都能做到。Selenium是一个用于Web应用自动化程序测试的工具,可以让浏览器自动加载页面,获取需要的数据,Selenium自己不带浏览器,所以需要和PhantomJS、…

    2025年12月3日
    4
  • 如何制作rootfs_linux常用文件系统类型

    如何制作rootfs_linux常用文件系统类型rootfs文件系统制作笔记环境:XC2440linux2.32.2红帽5根文件系统有一系列的目录组成,其中包括应用程序、C库、及相关的配置文件。制作根文件系统的步骤如下,下面步骤均在虚拟机终端上操作。一、创建文件系统总目录rootfs【mkdirrootfs】二、创建文件系统目录【cdrootfs】进入rootfs目录,创建下面目录/bin–放置…

    2022年10月7日
    4
  • 购买虚拟服务器(服务器与虚拟服务器)

    【新挑战】十二职业虚拟机整合一键端图文架设修改教程封面.jpg(62.69KB,下载次数:19)2019-5-2119:52上传十几年前的视频没有高清的,那时候觉得妹纸很漂亮,不过唱的就…原来游戏里可以开播放器有这歌,很燃很暴力【游戏设置】源端只有服务端没有配套客户端,所以我整合了一个能用的客户端,但不是很匹配,任务可以接不能完成支持64位WIN7\WIN10整合服务端,虚拟机一键…

    2022年4月11日
    63
  • 网络配置——Linux运维基础

    网络配置——Linux运维基础

    2021年12月3日
    38
  • 10分钟彻底理解Redis持久化和主从复制「建议收藏」

    10分钟彻底理解Redis持久化和主从复制

    2022年2月9日
    47

发表回复

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

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