DataGridView过滤区分大小写问题
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过滤区分大小写问题的更多相关文章
- Winform系列——好用的DataGridview过滤控件(表格的高级搜索功能)
上一篇 Winform系列——好看的DataGridView折叠控件 中主要介绍了DataGridview的表格多级折叠功能.这章主要介绍下最近封装的另一个DataGridview表格高级过滤的功能. ...
- DataGridView过滤功能
http://www.codeproject.com/Articles/33786/DataGridView-Filter-Popup http://www.cnblogs.com/jaxu/arch ...
- c# datagridview按条件搜索查询过滤
DataView的RowFilter 实现过滤 根据文本框文字对datagridview的数据进行模糊查询, 其实也就是一个过滤 string qymc = textBox1.Text.ToStrin ...
- .NET WinForm程序中给DataGridView表头添加下拉列表实现数据过滤
转:http://www.cnblogs.com/jaxu/archive/2011/08/04/2127365.html 我们见过Excel中的数据过滤功能,可以通过点击表头上的下拉列表来实现数据的 ...
- Filter 数组过滤函数精解示例
'************************************************************************* '**模 块 名:Filter 数组过滤函数精解示 ...
- DataTable的过滤需要的数据
DataView dv = datatable.DefaultView; (1) dv.RowFilter = "RowsId>3"; //此 ...
- WEKA使用(基础配置+垃圾邮件过滤+聚类分析+关联挖掘)
声明: 1)本文由我bitpeach原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Windows系统下的WEKA,实验内容主要有三部分,第一是分类挖掘(垃圾邮件过滤),第二是聚类分析, ...
- C#实现通用数据过滤窗体
最近一直在做WINFORM项目,所以经常有些新的想法或尝试与大家分享,之前与大家分享了通用窗体遮罩层.通用可附加数据绑定的DataGridView.窗体渐显,今天来分享一个大家在其它软件中常见的功能: ...
- Shell编程基础教程5--文本过滤、正则表达式、相关命令
5.文本过滤.正则表达式.相关命令 5.1.正则表达式(什么是正则表达式?正则表达式怎么进行匹配?常用命令) 简介: 一种用来描述文本模式的特殊语法 ...
随机推荐
- Function模式 -- 深入理解javascript
/* 一.回调函数 函数A作为另外一个函数B的参数 */ var menuId = $("ul.nav").first().attr("id"); var re ...
- python 解析web接口的json数据
实例1-使用urllib2 #utf-8 import urllib2 import json url="http://xxx.com" #获取json格式的字符串 page=ur ...
- 使用CSS禁止textarea调整大小功能的方法
这篇文章主要介绍了使用CSS禁止textarea调整大小功能的方法,禁止可以调整textarea大小功能的方法很简单,使用CSS的resize属性即可,需要的朋友可以参考下 如果你使用谷歌浏览器或火狐 ...
- Slim - 超轻量级PHP Restful API构建框架
下载源码包: http://www.slimframework.com/ 基于Slim的Restful API Sample: <?php require '/darjuan/Slim/Slim ...
- YARN-RPC
运行在YARN平台上面的RPC. 当前存在非常多的开源RPC框架,比较著名的有Thrift.Protocol Buffers 和 AVRO.他们均有两部分构成:对象序列化和远程过程调用. 重要类: Y ...
- 驱动笔记 - Makefile
ifneq ($(KERNELRELEASE),) obj-m := hello.ohello-objs := main.o add.o else KDIR := /lib/modules/2.6.1 ...
- javascript设计模式-生成器模式(Builder)
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 机器学习在 IT 运维管理中的必要性!
机器学习技术在监控工具中的应用已经成为 IT 运维与 DevOps 团队的一大热点话题.尽管相关的使用案例很多,对 IT 团队而已真正的「杀手级应用」是机器学习如何提高实时事件管理能力,从而帮助较大规 ...
- ab压力测试工具-批量压测脚本
ab(Apache benchmark)是一款常用的压力测试工具.简单易用,ab的命令行一次只能支持一次测试.如果想要批量执行不同的测试方式,并自动对指标进行分析,那么单靠手工一条一条命令运行ab,估 ...
- 由浅入深了解Thrift之客户端连接池化
一.问题描述 在上一篇<由浅入深了解Thrift之服务模型和序列化机制>文章中,我们已经了解了thrift的基本架构和网络服务模型的优缺点.如今的互联网圈中,RPC服务化的思想如火如荼.我 ...