关闭

DataTable中Rows.RemoveAt(i)和Rows(i).Delete的区别

3594人阅读 评论(0) 收藏 举报
分类:
//delete并不是真的删除 只是 将该row的rowstate变为 rowstate.delete(Rows.Count还是那么多)
//remove是 真的从datatable中删除

比如:

ds.Tables[0].Rows[i].Delete();
ds.Tables[0].Rows.RemoveAt(i);

1. 使用myDataTable.Rows.RemoveAt(i)删除行.
2. 使用myDataTable.Rows(i).delete 这时候需要使用 myDataTable.AcceptChanges 才能更新到数据库.

注意一:
不要在循环里使用myDataTable.Rows.RemoveAt(i).因为每删除一行后.i的值会增加,但行数会是减少了.这么做一定会出错.
因此要遍历数据,使用Remove方式时,要倒序的遍历
int count = ds.Tables[0].Rows.Count;
for (int i = count -1; i >=0; i--)
{
ds.Tables[0].Rows.RemoveAt(i);
}

注意二:
有时候发现使用ds.Tables[0].Rows[i].Delete();数据行也被直接删除了,原因是在创建datatable时没有执行AcceptChanges这个方法,那么在delete时,不会标记,会直接删除掉。
#region 查询合同概要信息表技术中最大合同ID

DataTable dtPOTechnology = temp.Copy();  //dtPOTechnology按照【合同概要信息表技术】字段结构定义,保持一致

//组装dtPOTechnology结构
dtPOTechnology.Columns.Add("UDA1");
dtPOTechnology.Columns.Add("UDA2");
dtPOTechnology.Columns.Add("UDA3");
dtPOTechnology.Columns.Add("UDA4");
dtPOTechnology.Columns.Add("UDA5");

dtPOTechnology.AcceptChanges(); //如果你在创建datatable时没有执行AcceptChanges这个方法,那么在delete时,不会标记,会直接删除掉。
#endregion

#region 检查合同技术概要信息记录是否存在明细为空,组装temp

if (dtTechnologyDetails.Rows.Count == 0)   //没有明细
{
    //在temp中删除这一行,使bulk方法不插入这一行
    //temp.Rows[i]["合同ID"] = dtTechnologyId.Rows[0]["合同ID"];
   dtPOTechnology.Rows[i].Delete();
   //poIdArrayList.Add(dtTechnologyId.Rows[0]["合同ID"]);
   dtReturn.Rows[i]["合同ID"] = dtTechnologyId.Rows[dtTechnologyId.Rows.Count - 1]["合同ID"];
}

dtPOTechnology.AcceptChanges();</span>


参考文献
http://bbs.csdn.net/topics/390495321?page=1
http://www.cnblogs.com/hakuci/archive/2012/04/26/2471586.html
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Datatable删除行的Delete和Remove方法的区别介绍

1、在C#中,如果要删除DataTable中的某一行,大约有以下几种办法:   •使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt...
  • ds8750802
  • ds8750802
  • 2015-03-18 15:57
  • 1644

C#中DataTable的使用

参考链接:  http://www.cnblogs.com/szytwo/archive/2012/03/21/2409536.html (信息比较老,仅作参考),  http://www.jb51....
  • aa2397199142
  • aa2397199142
  • 2016-01-14 17:27
  • 1299

jQuery DataTable使用时不能把请求参数绑定到javabean对象中

最近项目中有使用到bootstrap框架,为了风格统一,于是后台biao
  • chenjing502
  • chenjing502
  • 2014-07-30 02:56
  • 3075

C#中的i++和++i

刚刚学习C#的时候,难免会遇到一些麻烦,而我觉得最有意思的是i++和++i。 先介绍下它们吧!!i++ 俗称后加加:在处理运算的时候先不做运算,等输出的时候再加,这是我个人的理解。 ++i 俗称先加加...
  • mango_love
  • mango_love
  • 2015-08-03 23:54
  • 784

dataTable 、dataView、Dataset 区别的经典回答

原文出处:http://www.cnblogs.com/soany/articles/5316047.html 1、DataView是DataTable的表示,DataTable表里的记录是...
  • chelen_jak
  • chelen_jak
  • 2016-12-23 11:17
  • 771

学习笔记(一)C#基础和泛型List和DataTable和HashTable和Dictionary的简单用法--存值 取值

//Dictionary Dictionary dic = new Dictionary(100);//定义 100 代表只能存100条,不是必须填的 dic...
  • huaxiyuan
  • huaxiyuan
  • 2016-07-21 21:37
  • 850

如何在DataTable中查找数据 Dataview检索数据

如何在DataTable中查找数据 2012-02-22 08:59:04| 分类: C# |举报|字号 订阅 一、在DataTable中查找 1. 使用Select方法查找没有主键的表,或...
  • cnceohjm
  • cnceohjm
  • 2014-02-25 22:21
  • 958

jquery.dataTable.js 绘制表格使用详解

dataTable.js绘制表格真的是很不错,下面看看如何应用吧。 先导入dataTable.js的库吧! 定义html页面。 ...
  • qq_36330643
  • qq_36330643
  • 2017-11-30 17:53
  • 90

QTP之datatable用法笔记

1、连接数据库查询例子,无参数化 //查询收文操作,通过数据库查询记录数是否正确 //1、输出记录数值,例如78条  2、获取输出的记录数值 3、连接数据库,查询记录数 4、输出记录数值和从数据...
  • fetch001
  • fetch001
  • 2014-08-28 16:57
  • 3967

Datatable和实体还有实体集List的区别与转化

实体,实体集,Datatable三者的比较,用好了,灵活性一定会得到很大的提高
  • lovemenghaibin
  • lovemenghaibin
  • 2014-08-16 11:41
  • 1792
    个人资料
    • 访问:196991次
    • 积分:2035
    • 等级:
    • 排名:千里之外
    • 原创:65篇
    • 转载:23篇
    • 译文:1篇
    • 评论:122条
    文章分类
    最新评论