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(DataRowdr)方法,同理也只是删除一行可以,如果要循环删除请继续往下看。
3.循环彻底删除就要用.Rows.RemoveAt(intindex)方法,所以如果你是foreach的爱好者,在此请你换换口味,还有如果你是for的i++的忠实fans也希望你能换个思维。先看一下上面程序的正向写法(错误的,不可用)
for(inti=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(inti=0;i<len;i++) { if(((CheckBox)Rp.Items[i].FindControl("CB")).Checked) { dt.Rows[i]["C0"]=1;//标记要删除的记录 } } foreach(DataRowrindt.Select("c0=1")) { r.Delete(); } Rp.DataSource=dt; Rp.DataBind();
感兴趣的朋友可以测试运行本文实例以加深理解,希望本文所述对大家C#程序设计的学习有所帮助。
相关文章
- C# 隐式转换_php隐式转换
- asp.net(c#)网页跳转几种方法小结「建议收藏」
- C#文件流FileStream的用法[通俗易懂]
- c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法
- C#设计模式——(结构型-代理设计模式)
- 使用 Playwright 和 C# 自动化采集亚马逊网站的商品信息和评论
- 用C#中的params关键字实现方法形参个数可变
- C#异步调用的好处和方法分享
- C#最简单的关闭子窗体更新父窗体的实现方法
- C#启动windows服务方法的相关问题分析
- c#简单工厂、工厂方法与抽象工厂的区别分析
- 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
- 混合语言编程—C#使用原生的Directx和OpenGL绘图的方法
- c#读取文件详谈
- C#测量程序运行时间及cpu使用时间实例方法
- C#实现人民币大写转换示例代码
- c#生成缩略图不失真的方法实例分享
- c#委托把方法当成参数(实例讲解)
- asp.net(C#)生成Code39条形码实例条码枪可以扫描出
- C#基于DBContext(EF)实现通用增删改查的REST方法实例
- C#实现对象XML序列化的方法
- C#中参数个数可变的方法实例分析
- 在Linux上运行C#的方法
- C#中线程同步对象的方法分析
- C#中登录窗体和欢迎窗体关闭方法分析
- C#检测是否有危险字符的SQL字符串过滤方法
- C#实现图片放大功能的按照像素放大图像方法
- C#中改变DataGridView控件边框颜色的方法
- C#泛型和反射实例解析
- C#入门之checked和unchecked的区别实例解析
- C#实现将记事本中的代码编译成可执行文件的方法