同一DataTable下创建多个结构数据相同的DataView…
2018-06-18 04:55:14来源:未知 阅读 ()
昨天在根据经理的要求修改公司后台的时候,遇到了一个很奇怪的问题
DataView dvFocus = new DataView(ds.Tables[0]); DataView dvLook = new DataView(ds.Tables[0]); DataView dvNewUser = new DataView(ds.Tables[0]); DataView dvConsume = new DataView(ds.Tables[0]); DataView dvUsual = new DataView(ds.Tables[0]);
大概的意思就是用同一个DataTable来创建多个DataView,结构和数据都相同。
然后对前4个DataView使用RowFilter进行筛选,筛选完成之后,从最后一个DataView里剔除掉前面重复的数据
这个时候,问题就来了
if (dvConsume.Count > 0) { for (int i = 0; i < dvConsume.Count; i++) { for (int j = 0; j < dvUsual.Count; j++) { if (dvConsume[i]["UserID"].ToString() == dvUsual[j]["UserID"].ToString()) { dvUsual[j].Delete(); } } } }
这个dvConsume里只有一行数据,并且我是放在最后进行筛选的,根据代码来看,应该是没什么问题的,可是
每次都会出现【索引 0 不是为负数,就是大于行数。】这个错误,让我很是郁闷,因为代码没有逻辑上的问题啊
由于哪会儿快下班了,于是就把问题放到了今天来解决
在此断点调试,比对数据,发现
dvUsual[j].Delete();
这个删掉的行会同步到每个DataView,我的天,原来问题出在这
然后我去百度DataTable下的多个DataView是否会同步,没有结果
于是想到了clone()这个方法,果断试了下,一运行,发现一条数据都没有了。
然后看了下clone()的描述,原来是复制结构和约束,不复制数据。
最后找到了Copy()这个方法,复制结构和数据,我心想应该可以了
运行,没报错。
问题解决
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:编程语言和工具比较【翻译】
- eclipse下创建Maven项目(包含webapp目录结构) 2020-06-09
- SpringBoot通过web页面动态控制定时任务的启动、停止、创建 2020-06-09
- 数组小Demo 2020-05-25
- Android连载13-创建启动活动类 2020-05-25
- 阿里面试官鬼得很,问我为什么他们要禁用Executors创建线程 2020-05-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash