C#中DataTable删除行的方法分析

2013-10-24  来源:本站原创  分类:C#教程  人气:11 

这篇文章主要介绍了C#中DataTable删除行的方法,包括了常见的几种删除方法的分析,需要的朋友可以参考下

本文实例讲述了C#中DataTable删除行的方法,分享给大家供大家参考之用。具体实现方法如下:

自己的删除例子(drTemp是表,gvSummary是dev 的gridview。单击右键点击grid删除):

1、dtTemp.Rows.RemoveAt(gvSummary.FocusedRowHandle);

2、dtTemp.Rows[gvSummary.FocusedRowHandle].Delete(); dtTemp.AcceptChanges();

在C#中,如果要删除DataTable中的某一行,大致有以下几种办法:

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

Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取消删除。

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);
}

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

还是要慎用datatable.Rows.RemoveAt(i),若要删除多行,可以连续用Delete(),然后采用AccepteChanges()方法确认删除。

使用select方法:

先把要删除的记录标记一下,然后select删除行,实例代码如下:

for (int i = 0; i < len; i++)
{
  if (((CheckBox)Rp.Items[i].FindControl("CB")).Checked)
  {
 dt.Rows[i]["C0"] = 1;//标记要删除的记录
  }
}
foreach (DataRow r in dt.Select("c0=1"))
{
  r.Delete();
}
Rp.DataSource = dt;
Rp.DataBind();

感兴趣的朋友可以测试运行本文实例以加深理解,希望本文所述对大家C#程序设计的学习有所帮助。

相关文章
  • C#中DataTable删除行的方法分析 2013-10-24

    这篇文章主要介绍了C#中DataTable删除行的方法,包括了常见的几种删除方法的分析,需要的朋友可以参考下 本文实例讲述了C#中DataTable删除行的方法,分享给大家供大家参考之用.具体实现方法如下: 自己的删除例子(drTemp是表,gvSummary是dev 的gridview.单击右键点击grid删除): 1.dtTemp.Rows.RemoveAt(gvSummary.FocusedRowHandle); 2.dtTemp.Rows[gvSummary.FocusedRowHand

  • C#中datatable去重的方法 2015-01-30

    这篇文章主要介绍了C#中datatable去重的方法,通过两种不同的方法对比分析了datatable去重的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C#中datatable去重的方法,分享给大家供大家参考.具体方法如下: 这里主要介绍两种方法: 1 数据库直接去除重复 select distinct * from 表名 去除了重复行distinct 2 对 DataTable直接进行操作 复制代码 代码如下: DataTable dt=db.GetDt("select * fr

  • C#中使用资源的方法分析 2014-11-09

    这篇文章主要介绍了C#中使用资源的方法,较为详细的对比分析了C#中使用资源的几种常用方法,非常具有实用价值,需要的朋友可以参考下 本文实例分析了C#中使用资源的方法.分享给大家供大家参考.具体如下: 这里总结一个在C#中如何使用资源的方法如下: 方法一.使用本地文件1.将本地要加入的资源文本(视频,图片,文本或其它)加入项目,比如我们现在加入一个up.bmp的图片到项目中,且放在文件夹Resources下面 2.将up.bmp的生成操作设置为"嵌入的资源" 3.读取资源: Assemb

  • Java中对象的销毁方法分析 2015-02-06

    这篇文章主要介绍了Java中对象的销毁方法,较为详细的分析了对象的功能.用法及销毁对象对于程序运行的益处,需要的朋友可以参考下 本文较为详细的分析了Java中对象的销毁方法.分享给大家供大家参考.具体分析如下: Java中的基本数据类型变量和对象的名称引用变量如定义在方法中,都为局部变量.但对象本身不一定是局部生命周期.如函数外存在其他对该对象的引用变量,则该对象的生命周期延伸至该其他引用变量所在的块. 如从被调用函数参数引用传值或返回值到主调用函数所在的对象类型变量中,则该对象都仍存在(但被调

  • Datatable删除行的Delete和Remove方法的区别介绍 2014-10-02

    Datatable删除行的Delete和Remove方法的区别介绍,需要的朋友可以参考一下 1.在C#中,如果要删除DataTable中的某一行,大约有以下几种办法: •使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index):可以直接删除行 •datatable.Rows[i].Delete().Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列

  • C#中DataTable实现行列转换的方法 2015-03-14

    这篇文章主要介绍了C#中DataTable实现行列转换的方法,实例分析了C#操作DataTable的相关技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C#中DataTable实现行列转换的方法.分享给大家供大家参考.具体实现方法如下: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataTable tt = GetCrossTable(CreateDT()); GridView1

  • C++中sprintf使用的方法与printf的区别分析 2013-10-10

    这篇文章主要介绍了C++中sprintf使用的方法与printf的区别,实例分析了sprintf与printf的具体用法及相关注意事项,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C++中sprintf使用的方法与printf的区别.分享给大家供大家参考.具体分析如下: 首先我们在MSDN看一下printf的原型和sprintf的原型 int printf( const char *format [, argument]... ); 和 复制代码 代码如下: int sprintf

  • jsp中Action使用session方法实例分析 2013-10-31

    这篇文章主要介绍了jsp中Action使用session方法,实例分析了action操作session的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例分析了jsp中Action使用session方法.分享给大家供大家参考.具体如下: 在Struts2里,如果需要在Action中使用session,可以通过下面两种方式得到 1.通过ActionContext class中的方法getSession得到 2.Action实现org.apache.struts2.interceptor.S

  • Go语言中普通函数与方法的区别分析 2014-01-05

    这篇文章主要介绍了Go语言中普通函数与方法的区别,以实例形式对比分析了普通函数与方法使用时的区别与相关技巧,需要的朋友可以参考下 本文实例分析了Go语言中普通函数与方法的区别.分享给大家供大家参考.具体分析如下: 1.对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然. 2.对于方法(如struct的方法),接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以. 以下为简单示例: package structTest //普通函数与方法的区别(在接收者分别为值

  • jquery中animate的stop()方法作用实例分析 2014-05-14

    这篇文章主要介绍了jquery中animate的stop()方法作用,实例分析了animate的stop()方法在视频播放代码中的使用技巧,感兴趣的朋友可以对比分析一下带stop方法与不带stop方法运行效果的区别,需要的朋友可以参考下 本文实例分析了jquery中animate的stop()方法作用.分享给大家供大家参考.具体分析如下: 这里以一个视频中的代码段告诉你stop()的作用: 代码如下: <style type="text/css"> ul li{ width

  • C#中datatable序列化与反序列化实例分析 2014-06-20

    这篇文章主要介绍了C#中datatable序列化与反序列化,是datatable的常用技巧,需要的朋友可以参考下 本文实例讲述了C#中datatable序列化与反序列化,分享给大家供大家参考.具体方法如下: 一.datatable序列化 public string getSendDetailQuery(DateTime timeS, DateTime timeE, string sccount) { try { SmsOperate so = new SmsOperate(); //得到dt D

  • C#中线程同步对象的方法分析 2014-06-23

    这篇文章主要介绍了C#中线程同步对象的方法,较为详细的分析了线程同步的原理与实现方法,并给出了实例总结,是比较实用的技巧,需要的朋友可以参考下 本文实例讲述了C#中线程同步对象的方法.分享给大家供大家参考.具体分析如下: 在编写多线程程序时无可避免会遇到线程的同步问题.什么是线程的同步呢? 举个例子:如果在一个公司里面有一个变量记录某人T的工资count=100,有两个主管A和B(即工作线程)在早一些时候拿了这个变量的值回去,过了一段时间A主管将T的工资加了5块,并存回count变量,而B主管将

  • Asp.net中DataTable导出到Excel的方法介绍 2015-02-14

    本篇文章介绍了,Asp.net中DataTable导出到Excel的方法.需要的朋友参考下 #region DataTable导出到Excel /// <summary> /// DataTable导出到Excel /// </summary> /// <param name="pData">DataTable</param> /// <param name="pFileName">导出文件名</pa

  • jquery实现增加删除行的方法 2014-05-07

    这篇文章主要介绍了jquery实现增加删除行的方法,涉及表格中行的增加与删除技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery实现增加删除行的方法.分享给大家供大家参考.具体分析如下: 最近做一个投票管理的模块,需要添加问题选项,为了方便,就简单地实现了表格行的添加.删除. 注:需引入jquery.js 先上效果图:(form中默认有4行) 表单代码: <div class="oz-form-fields" style="width:450px

  • C#实现Datatable排序的方法 2013-10-12

    这篇文章主要介绍了C#实现Datatable排序的方法,在进行C#数据库程序设计的时候有不错的借鉴价值,需要的朋友可以参考下 本文实例展示了C#实现Datatable排序的方法,分享给大家供大家参考之用.具体方法如下: 一般来说,在C#中要对Datatable排序,可使用DefaultView的Sort方法.需要先获取Datatable的DefaultView,然后设置得到的Dataview的sort属性,最后用视图的ToTable方法将排好序的dataview导出为Datatable. 代码如

  • 快速查出Oracle数据库中锁等待的方法 2013-10-20

    这篇文章主要介绍了快速查出Oracle数据库中锁等待的方法,在实际开发中很有应用价值,需要的朋友可以参考下 通常在大型数据库系统中,为了保证数据的一致性,在对数据库中的数据进行操作时,系统会进行对数据相应的锁定. 这些锁定中有"只读锁"."排它锁","共享排它锁"等多种类型,而且每种类型又有"行级锁"(一次锁住一条记录),"页级锁"(一次锁住一页,即数据库中存储记录的最小可分配单元),"表级锁&q

  • python中列表元素连接方法join用法实例 2013-10-25

    这篇文章主要介绍了python中列表元素连接方法join用法,实例分析了Python中join方法的使用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中列表元素连接方法join用法.分享给大家供大家参考.具体分析如下: 创建列表: >>> music = ["Abba","Rolling Stones","Black Sabbath","Metallica"] >>>

  • Jquery中find与each方法用法实例 2013-11-10

    这篇文章主要介绍了Jquery中find与each方法用法,实例分析了find与each方法的功能.定义与使用技巧,需要的朋友可以参考下 本文实例讲述了Jquery中find与each方法用法.分享给大家供大家参考.具体如下: 一.find()方法 jquery选择器非常强大,利用css的命名规约,可以更快更方便的找出想要的元素. 比如: $("#id") $("#"+"id") $(this) $(element) 等等,只要灵活运用,就能爆发

  • C#查找对象在ArrayList中出现位置的方法 2013-11-10

    这篇文章主要介绍了C#查找对象在ArrayList中出现位置的方法,涉及C#中IndexOf方法的使用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C#查找对象在ArrayList中出现位置的方法.分享给大家供大家参考.具体分析如下: 我们可以通过IndexOf方法来查找对象在ArrayList中的位置 ArrayList alcollect = new ArrayList(); // Add individual items to the collection string st

  • jquery中append()与appendto()用法分析 2013-11-12

    这篇文章主要介绍了jquery中append()与appendto()用法分析,以实例的形式分析了jquery中append()与appendto()的具体语法与详细用法,需要的朋友可以参考下 本文实例分析了jquery中append()与appendto()的用法.分享给大家供大家参考.具体分析如下: 在jQuery的文档操作方法中,append()和appentto()方法执行的任务相同,但是两者也有区别. 1.append()方法:在被选元素的结尾(但仍在元素内部)插入指定的内容. a.语