DevExpress控件cxGrid实现多列模糊匹配输入的完美解决方案
本方案不需要修改控件源码,是完美解决cxgrid或TcxDBExtLookupComboBox支持多列模糊匹配快速输入的最佳方案!!
转自https://blog.csdn.net/qq56430204/article/details/52199007
小哥摸索多日,终于搞定cxgrid和TcxDBExtLookupComboBox可以支持多列模糊查找输入了!
本人吐血奉献不需要修改控件源码的方案,堪称史上最完美解决方案!!走过路过不要错过,欢迎收藏!
修改方案:cxGrid列的Properties设置为ExtLookupComboBox对象,或者用TcxDBExtLookupComboBox控件。
TExtLookupComboBox和TcxDBExtLookupComboBox控件默认只支持单列查找,而且是始于包含查找,不是我们想要的多列完全模糊匹配查找,所以还需要自行修改。改写方法如下:
假设cxgrid中有一个服务商ID数据列:cxGridDBTableView1VENDOR_ID: TcxGridDBColumn,绑定服务商ID字段。
第1步: OnGetPropertiesForEdit Event.
procedure TForm1.cxGridDBTableView1VENDOR_IDGetPropertiesForEdit
(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AProperties: TcxCustomEditProperties);
begin
with (AProperties as TcxExtLookupComboBoxProperties) do
begin
//也可以在设计期的属性窗口中设置,则可以省去此第1步代码。
CaseInsensitive := True;
CaseSensitiveSearch := False;
IncrementalSearch := False;
IncrementalFiltering := False;
DropDownListStyle := lsEditList;
View.DataController.Filter.Options := [fcoCaseInsensitive]; //过滤忽略大小写差异.
View.DataController.Filter.AutoDataSetFilter := False; //避免编辑时干扰到其它行.
View.FilterBox.CustomizeDialog := False;
end;
end;
第2步:Properties.OnChange Event.
procedure TForm1.cxGridDBTableView1VENDOR_IDPropertiesChange(Sender: TObject);
var
iCol: Integer;
begin
with (Sender as TcxExtLookupComboBox) do
begin
Properties.View.DataController.Filter.Clear;
Properties.View.DataController.Filter.Root.Clear;
// View中所有可视列都用于模糊检索.
for iCol := 0 to Properties.View.ItemCount - 1 do
begin
if (Properties.View.Items[iCol] as TcxGridColumn).VisibleForCustomization
then
begin
if Properties.View.DataController.Filter.Root.Count > 0 then
Properties.View.DataController.Filter.Root.BoolOperatorKind := fboOR;
Properties.View.DataController.Filter.Root.AddItem
(Properties.View.Items[iCol], foLike, '%' + EditText + '%', '%' +EditText + '%');
end;
end;
Properties.View.DataController.Filter.Active := True;
if Properties.View.DataController.DataRowCount = 1 then
Properties.View.DataController.SetFocus;
end;
end;
第3步:Properties.OnCloseUp Event.
procedure TForm1.cxGridDBTableView1VENDOR_IDPropertiesCloseUp(Sender: TObject);
begin
(Sender as TcxExtLookupComboBox).Properties.View.DataController.Filter.Clear;
end;
如果不要cxGrid,而用TcxDBExtLookupComboBox控件,方法与上述雷同!
DevExpress控件cxGrid实现多列模糊匹配输入的完美解决方案的更多相关文章
- DevExpress控件TExtLookupComboBox实现多列模糊匹配输入的方法
本方案不需要修改控件源码,是完美解决支持多列模糊匹配快速输入的最佳方案!! 1.把列的Properties属性设置为ExtLookupComboBox. Properties.Incrementa ...
- Android控件——AutoCompleteTextView与MultiAutoCompleteTextView(实现自动匹配输入的内容)
------------------------------------AutoCompleteTextView----------------------
- DevExpress控件使用经验总结- GridView列表行号显示操作
DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示一 ...
- DevExpress控件的GridControl控件小结
DevExpress控件的GridControl控件小结 (由于开始使用DevExpress控件了,所以要点滴的记录一下) 1.DevExpress控件组中的GridControl控件不能使横向滚动条 ...
- 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择
在实际的项目开发过程中,有好的控件或者功能模块,我都是想办法尽可能集成到我的WInform开发框架中,这样后面开发项目起来,就可以节省很多研究时间,并能重复使用,非常高效方便.在我很早之前的一篇博客& ...
- DevExpress控件开发常用要点(项目总结版)
使用DevExpress控件来做项目开发已经有很长一段时间了,在摸索开发到客户苛刻要求的过程中,其中碰到过很多问题需要解决的,随着一个个问题的解决,也留下很多对DevExpress控件的使用经验及教训 ...
- DevExpress控件-- Gridcontrol合并表头
写在前面的话: 在园子里逛了有一段时间了,一直想写点东西,但苦于自己的水平有限,生怕写出来的东西浪费了读者的时间.楼主有幸参加了公司DevExpress控件的培训,独乐乐不如众乐乐,特附上Demo以飨 ...
- DevExpress控件-GridControl根据条件改变单元格/行颜色--转载
DevExpress控件-数据控件GridControl,有时我们需要根据特定条件改变符合条件的行或者单元格颜色达到突出显示目的,现在动起鼠标跟我一起操作吧,对的,要达到这个目的您甚至都不用动键盘. ...
- DevExpress控件使用之RichEditControl的使用
原文:DevExpress控件使用之RichEditControl的使用 做Winform的,我们一般都知道,传统.NET界面有一个RichTextBox控件,这个是一个富文本控件,可以存储图片文字等 ...
随机推荐
- ubuntu下为单个网卡配置多个ip
参考文档: https://www.jb51.net/os/Ubuntu/418951.html https://blog.csdn.net/ying1989920/article/details/4 ...
- serde
一.背景 1.当进程在进行远程通信时,彼此可以发送各种类型的数据,无论是什么类型的数据都会以二进制序列的形式在网络上传送. 发送方需要把对象转化为字节序列才可在网络上传输,称为对象序列化: 接收方则需 ...
- Mockito学习(zz)
junitmaven软件测试框架项目管理 Mockito是一个流行的Mocking框架.它使用起来简单,学习成本很低,而且具有非常简洁的API,测试代码的可读性很高.因此它十分受欢迎,用 户群越来越 ...
- Linux学习笔记:JDK安装
系统为CentOS 7,安装Oracle jdk1.8 卸载系统自带的Openjdk(若无可跳过这一步,可以通过 java -version 查看),步骤是:查找Openjdk,卸载Openjdk r ...
- ios 内存管理与property copy strong weak assign
- (void)fun{ NSString* str = [[NSString alloc] initWithString:@"string"]; NSLog(@"% ...
- 爬取数据时解析url时一直报错Caused by: java.net.URISyntaxException: Illegal character in query at index 823替换了所有空格和特殊字符还是无效
近日在用HttpClient访问抓取汇率时,为了省力,直接采用 String url = "http://api.liqwei.com/currency/?exchange=usd|cny& ...
- jquery选择树:CheckTree 插件
在做权限等提交的时候,需要用到选择树.比较了很多插件如:easyUI 树,ztree等等.本来决定自己写,但是到最后还是发现了checkTree这个插件.省了很多事情. 但是在引用过程中还是出现了一些 ...
- ssh 认证
ssh 秘钥认证流程 ssh配置认证 基于口令(密码)的安全验证 [root@m01 ~]# ssh 10.0.0.41 hostname root@10.0.0.41's password: bac ...
- java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory的解决办法
Tomcat7早就出来正式版,但是一直都没有用过,尤其是针对于我还一直在用Myeclipse6.5的人来说,它在配置tomcat的时候没有tomcat7的选项,所以就报了错误信息. java.lang ...
- windows10 搭建Dubbo
1.官方文档 http://dubbo.apache.org/zh-cn/docs/admin/ops/dubbo-ops.html 2.下载安装包 https://mirrors.cnnic.cn/ ...