昨天在根据经理的要求修改公司后台的时候,遇到了一个很奇怪的问题

                DataView dvFocus = new DataView(ds.Tables[]);
DataView dvLook = new DataView(ds.Tables[]);
DataView dvNewUser = new DataView(ds.Tables[]);
DataView dvConsume = new DataView(ds.Tables[]);
DataView dvUsual = new DataView(ds.Tables[]);

大概的意思就是用同一个DataTable来创建多个DataView,结构和数据都相同。

然后对前4个DataView使用RowFilter进行筛选,筛选完成之后,从最后一个DataView里剔除掉前面重复的数据

这个时候,问题就来了

                if (dvConsume.Count > )
{
for (int i = ; i < dvConsume.Count; i++)
{
for (int j = ; 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()这个方法,复制结构和数据,我心想应该可以了

运行,没报错。

问题解决

同一DataTable下创建多个结构数据相同的DataView的小问题的更多相关文章

  1. 微软Azure 经典模式下创建内部负载均衡(ILB)

    微软Azure 经典模式下创建内部负载均衡(ILB) 使用之前一定要注意自己的Azure的模式,老版的为cloud service模式,新版为ARM模式(资源组模式) 本文适用于cloud servi ...

  2. 无法在“EntityFramework”已存在的情况下创建影像复制该文件的解决方案

    问题产生的原因:你项目正在生成中你就打开浏览器预览了,导致这个问题解决方案:右击重新生成项目,等生成后再打开 “/”应用程序中的服务器错误. 无法在“EntityFramework”已存在的情况下创建 ...

  3. Linux:Ubuntu16.04下创建Wifi热点

    Linux:Ubuntu16.04下创建Wifi热点 说明: 1.Ubuntu16.04里面可以直接创建热点,而不用像以前的版本,还要其他辅助工具. 2.本篇文章转载自编程人生 具体步骤如下: 1.  ...

  4. 在Mac下创建ASP.NET Core Web API

    在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉 ...

  5. 解决Oracle在scott用户下创建视图(VIEW)权限不足的方法

    问题描述:在scott用户下创建视图的时候,报错:权限不足.(其他用户以此类推)解决方法: 以dba用户登录 sqlplus / as sysdba 赋予scott用户创建VIEW的权限 grant  ...

  6. windows环境下创建 .文件夹

    一.windows环境下创建 .文件夹 1.新建一个文件夹 2.重命名为.properties.(名字前后都加点) 二.windows环境下创建 .文件 1.上面的方法对文件同样适用 2.运行CMD, ...

  7. ROS下创建第一个节点工程

    1.创建工作区 mkdir catkin_ws cd catkin_ws mkdir src 2.在src目录下创建包Myrobot,后面所跟roscpp rospy为依赖包 catkin_creat ...

  8. linux下创建用户

    linux下创建用户(一) Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系 ...

  9. MyEclipse下创建的项目导入到Eclipse中详细的图文配置方法

    一.情景再现. 有些人比较喜欢用Myeclipse开发,有些人却比较喜欢用eclipse开发.但是其中有一个问题,Myeclipse里面的项目导入的时候出现了一个小小的问题. 如下: 二.说明问题 导 ...

随机推荐

  1. sqlserver中的rowversion

    rowversion 公开数据库中自动生成的唯一二进制数字的数据类型.rowversion通常用作给表行加版本戳的机制,存储大小为8字节.rowversion数据类型只是递增的数字,不保留日期或时间. ...

  2. WebApi2官网学习记录---BSON

    BSON 是轻量级的,能够进行快速查询和高效的解码/编码.BSON方便查询是由于elements的前面都有一个表示长度的字段,所以解释器可以快速跳过这个elements:高效的解码/编码是因为nume ...

  3. jquery悬停tab

    <style> *{ margin:0; padding:0;} body { font:12px/19px Arial, Helvetica, sans-serif; color:#66 ...

  4. vc中调用Com组件的方法详解

    vc中调用Com组件的方法详解 转载自:网络,来源未知,如有知晓者请告知我.需求:1.创建myCom.dll,该COM只有一个组件,两个接口:   IGetRes--方法Hello(),   IGet ...

  5. onsubmit提交前先验证(验证不通过阻止form提交)

    <form  onsubmit = "return val();"> <input type="submit" value="提交& ...

  6. hdu find the safest road

    算法:多源最短路(floyd) 题意:每条通路有一个安全系数,求始点到终点的最大的安全系数并输出,如果没有输出What a pity! c++超时啊 Problem Description XX星球有 ...

  7. hdu Phone List

    Problem Description Given a list of phone numbers, determine if it is consistent in the sense that n ...

  8. 练习—单链表—Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...

  9. C#如何设置下拉COMMBOX为不可输入,只有下拉条目

    设置下拉框的DropDownStyle属性为DropDownList

  10. 一句SQL实现MYSQL的递归查询

    众所周知,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归查询的.这个得益于Mysql允许在SQL语句内使用@变量.以下是示例代码. 创建 ...