DataTable上的过滤方法:

一、可以用DataTable.Select("条件"),返回DataRow[]格式的结果集。

DataRow[] drArr = dt.Select("C1 LIKE ’abc%’");//模糊查询

想要在网格上看到过滤后的效果,则还需要进一步转换:

先看一个错误的写法:

DataTable dtNew = dt.Clone();
for (int i = ; i < drArr.Length; i++)
{
dtNew.Rows.Add(drArr[i]);
}

上面的写法会报错,因为DataRow是属于其他DataTable的(这个和我们复制一个XmlNode时是一个道理,不能直接取出一个xmlNode的子节点,然后另外一个节点用Append(node)方法将其添加进来,此时会报相同的错误,提示该节点是属于另外一个xmlNode节点的)。正确的写法如下:

DataTable dtNew = dt.Clone();
for (int i = ; i < drArr.Length; i++)
{
dtNew.ImportRow(drArr[i]);
}

要用Import的方式,同理,如果是将一个xmlNode复制到另一个xmlNode的子下面去时,也应该用Node.ImportNode()方法。

得到了过滤后的数据源后,将其绑定到当前网格即可。但是这种方法也有它的弊端,此时网格的数据源已经改变了!如果再要求有一个取消过滤的功能,那么如果不事先保存原来的数据源,便不能再回到初始状态。

二、DataTable.DefaultView.RowFilter="过滤条件"

DataTable.DefaultView是DataTable的一个视图。在博客园中曾经参考了博客http://www.cnblogs.com/spirithero/archive/2011/07/20/2111351.html

其中将Default的用法讲的很详细。

前段时间在项目中遇到了一个DataTable过滤区分大小写的问题,我把原来的界面做了一个比较丑,比较简陋的界面,但是功能都有了。具体的界面如下:

可以用DataTable的CaseSensitive属性来设置其是否大小写敏感,但是这个会对整个网格都生效,例如以上这个例子中,有的过滤条件是大小写敏感的而有的条件又是不敏感的。

后来的解决方法如下:

var dt=(DataTable)DataGridViewFilter.DataSource;

dt.CaseSensitive=true;

var dv=dt.DefaultView;

var upperChar='b'.ToUpper();//获取不区分大小写的行,将这一行的值分别转化为大写和小写的
var lowerChar='b'.ToLower();
dv.RowFilter=('CID like '%a%'' and (CNAME='upperChar' || CNAME='lowerChar') or CCLASS like '%C%');

当哪一行是大小写不敏感时,就对这一行进行特殊考虑,把大写和小写都考虑进去,用or连接。然后拼成sql串。

注意:dv.RowFilter="UPPER(CNAME) like '%A%'"是不支持的。即在RowFilter中不支持大小写的转换,只能写过滤语句。不能有其他的函数。

DataGridView过滤区分大小写问题的更多相关文章

  1. Winform系列——好用的DataGridview过滤控件(表格的高级搜索功能)

    上一篇 Winform系列——好看的DataGridView折叠控件 中主要介绍了DataGridview的表格多级折叠功能.这章主要介绍下最近封装的另一个DataGridview表格高级过滤的功能. ...

  2. DataGridView过滤功能

    http://www.codeproject.com/Articles/33786/DataGridView-Filter-Popup http://www.cnblogs.com/jaxu/arch ...

  3. c# datagridview按条件搜索查询过滤

    DataView的RowFilter 实现过滤 根据文本框文字对datagridview的数据进行模糊查询, 其实也就是一个过滤 string qymc = textBox1.Text.ToStrin ...

  4. .NET WinForm程序中给DataGridView表头添加下拉列表实现数据过滤

    转:http://www.cnblogs.com/jaxu/archive/2011/08/04/2127365.html 我们见过Excel中的数据过滤功能,可以通过点击表头上的下拉列表来实现数据的 ...

  5. Filter 数组过滤函数精解示例

    '************************************************************************* '**模 块 名:Filter 数组过滤函数精解示 ...

  6. DataTable的过滤需要的数据

    DataView dv = datatable.DefaultView;           (1)      dv.RowFilter = "RowsId>3";  //此 ...

  7. WEKA使用(基础配置+垃圾邮件过滤+聚类分析+关联挖掘)

    声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的WEKA,实验内容主要有三部分,第一是分类挖掘(垃圾邮件过滤),第二是聚类分析, ...

  8. C#实现通用数据过滤窗体

    最近一直在做WINFORM项目,所以经常有些新的想法或尝试与大家分享,之前与大家分享了通用窗体遮罩层.通用可附加数据绑定的DataGridView.窗体渐显,今天来分享一个大家在其它软件中常见的功能: ...

  9. Shell编程基础教程5--文本过滤、正则表达式、相关命令

    5.文本过滤.正则表达式.相关命令    5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令)        简介:            一种用来描述文本模式的特殊语法      ...

随机推荐

  1. 搭建SpringMVC+MyBatis开发框架一

    大部分 Java 应用都是 Web 应用,展现层是 Web 应用不可忽略的重要环节.Spring 为展现层提供了一个优秀的 Web 框架—— Spring MVC.和众多其他 Web 框架一样,它基于 ...

  2. 主元分析PCA理论分析及应用

    首先,必须说明的是,这篇文章是完完全全复制百度文库当中的一篇文章.本人之前对PCA比较好奇,在看到这篇文章之后发现其对PCA的描述非常详细,因此迫不及待要跟大家分享一下,希望同样对PCA比较困惑的朋友 ...

  3. UBOOT分析

    U-Boot是一个通用的Boootloader,它是在系统上电后执行的第一段程序,先初始化硬件设备,再准备软件环境,最后引导系统内核. 一般来说Bootloader的启动过程来说一般分两个阶段: 第一 ...

  4. linux系统非ROOT用户80端口不能启动tomcat问题的变通办法——通过Iptables端口转发

    2010-07-17 13:21:42 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{ ...

  5. .NET设计模式(13):享元模式(Flyweight Pattern)(转)

    摘要:面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题.但是在某些情况下,对象的数量可能会太多,从而导致了运行时的代价.那么我们如何去避免大量细粒度的对象,同时又不影响客户程序使用面 ...

  6. 一个奇怪的网络故障 默认网关为0.0.0.0(Windows)

    用IPCONFIG命令看到的情况是这样: Windows IP 配置 以太网适配器 本地连接 : 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . ...

  7. list<T> 自定义比较器进行排序

    今天在研究List<T> 集合如何排序,我试过很多,但是都不行,然后看到msdn中的这个比较器排序,自己测试了代码,No Problem.给大家分享一下. 类型 T 的默认比较器按如下方式 ...

  8. VS2012 win7 修改TFS登陆账号

    1.修改登陆账号: 在网上搜了好多,都没有找到解决方法,自己琢磨了一会找到了修改登陆TFS(Team Foundation Server)(团队资源管理器)的账号,和大家分享一下吧. 点击“开始”-- ...

  9. ExtJs之Element.select函数

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  10. 很不错的文章---【问底】徐汉彬:亿级Web系统搭建——单机到分布式集群

    [导读]徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设. 大规模流量的网站架构,从来都是慢慢“成长”而来.而这 ...