如何定义搜索面板的过滤器?DevExpress WPF超easy
DevExpress广泛应用于ECM企业内容管理、 成本管控、进程监督、生产调度,在企业/政务信息化管理中占据一席重要之地。通过DevExpress WPF Controls,您能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过该控件来实现。
DevExpress WPF Controls v19.2下载
问题:
项目中实现了customRowFilter(下面提供的代码),以便在用户搜索网格时忽略重音和大小写。目前存在的问题是,如果用户使用filter editor应用于列表,然后使用绑定到TableView.SearchString的搜索框。如何在FilterString和SearchString之间使用AND,现在似乎是OR。如何在这两个条件之间实现使用AND而不是OR?
private List<GridColumn> _searchableColumns;
private void OnCustomRowFilter(object sender, RowFilterEventArgs e)
{
if (string.IsNullOrEmpty(View.SearchString) || e.Handled)
return;
if (_searchableColumns == null)
{
_searchableColumns = new List<GridColumn>();
foreach (var c in Columns)
{
if (c.FieldType == typeof(bool) || !c.AllowAutoFilter)
continue;
_searchableColumns.Add(c);
}
}
var filter = RemoveDiacriticsCustom(View.SearchString).ToLower();
e.Visible = false;
for (var i = 0; i < _searchableColumns.Count; i++)
{
var processedString = RemoveDiacriticsCustom(GetCellDisplayTextByListIndex(e.ListSourceRowIndex, _searchableColumns[i])).ToLower();
if (processedString.Contains(filter))
{
e.Visible = true;
break;
}
}
e.Handled = true;
}
private static string RemoveDiacriticsCustom(string text)
{
return string.Concat(text.Normalize(NormalizationForm.FormD).Where(ch => CharUnicodeInfo.GetUnicodeCategory(ch) != UnicodeCategory.NonSpacingMark)).Normalize(NormalizationForm.FormC);
}
分析了DevExpress Searching/Filtering pipeline,发现可以修改以下方法实现搜索和忽略重音。在不修改DevExpress代码的情况下,有一种方法可以实现使用以下修改后代码的earchStringToFilterCriteria自定义函数。
static bool? FnContainsCaseInsensitive(string str1, string str2)
{
if(str1 == null || str2 == null)
return null;
//return
// str1.IndexOf(str2, StringComparison.InvariantCultureIgnoreCase) >= 0 ||
// str1.IndexOfInvariantCultureIgnoreCase(str2) >= 0;
var compareInfo = CultureInfo.InvariantCulture.CompareInfo;
return compareInfo.IndexOf(str1, str2, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace) > -1;
}
解决方案:
CustomRowFilter旨在覆盖默认过滤的结果,因此需要考虑FilterString属性值,或者使用其他事件。
建议考虑改用SearchStringToFilterCriteria事件,可以在其中指定如何将搜索字符串转换为过滤条件。例如创建一个自定义函数标准运算符,该运算符将删除变音符号并在SearchStringToFilterCriteria事件处理程序中使用它。
DevExpress v19.2全新发布,最新动态请持续关注DevExpress中文网!
DevExpress中文网官网QQ群:540330292 欢迎一起进群讨论
如何定义搜索面板的过滤器?DevExpress WPF超easy的更多相关文章
- DevExpress WPF v18.2新版亮点(二)
买 DevExpress Universal Subscription 免费赠 万元汉化资源包1套! 限量15套!先到先得,送完即止!立即抢购>> 行业领先的.NET界面控件2018年第 ...
- DevExpress WPF v19.1新版亮点:PDF Viewer等控件新功能
行业领先的.NET界面控件DevExpress 日前正式发布v19.1版本,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WPF v19.1中新增的一些控件及部 ...
- DevExpress WPF v19.1:Data Grid/Tree List等控件功能增强
行业领先的.NET界面控件DevExpress 日前正式发布v19.1版本,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WPF v19.1中新增的一些控件及部 ...
- Smart Tag——DevExpress WPF初探
Smart Tag是一个设计时扩展,所有标准控件均自带这个功能,当然也包括 DevExpress WPF Controls .可以快速设置控件的值或者绑定最重要的属性.它还可以帮助你完成一些重复的工作 ...
- DevExpress WPF v18.2新版亮点(六)
买 DevExpress Universal Subscription 免费赠 万元汉化资源包1套! 限量15套!先到先得,送完即止!立即抢购>> 行业领先的.NET界面控件2018年第 ...
- DevExpress WPF v18.2新版亮点(三)
买 DevExpress Universal Subscription 免费赠 万元汉化资源包1套! 限量15套!先到先得,送完即止!立即抢购>> 行业领先的.NET界面控件2018年第 ...
- 甘特图、Data Editors控件新玩法—DevExpress WPF v19.2
通过DevExpress WPF Controls,你能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案. 无论是Office办公软件的衍 ...
- DevExpress WPF v18.2新版亮点(七)
行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress WPF v18.2的新功 ...
- DevExpress WPF v18.2新版亮点(四)
行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExpress WPF v18.2的新功 ...
随机推荐
- list第二部分
# lst = ['alex',[1,2,3], 'wusir','cgon', "女神", "太白"]# # l1= lst[0]# ## # print(l ...
- web漏洞
*参考网站 https://cxsecurity.com/ https://www.exploit-db.com/ https://www.seebug.org/ http://www.securit ...
- when i import skimage,it occurred --"cannot import name '_validate_lengths'"
how to sovle this prolem? 1)with the administrator user to run cmd 2)imput and run : pip install --u ...
- oracle共享数据库操作
Hello,大家好,这个功能相信新手小白很需要,今天小编因为刚好遇到,所以写出来分享给大家,首先你电脑得有数据库,以及PLSQL工具包,这个相信大家都有了 1.打开NET Manger应用,win10 ...
- Spring 加载项目外部配置文件
背景 在项目的部署过程中,一般是打成 war 或者 jar 包,这样一般存在两种问题: 即使是配置文件修改,也还需要整个项目重新打包和部署. 整个项目只有一套环境,不能切换. 针对上面的问题,可以使用 ...
- 考研路茫茫——空调教室HDU2242(Tarjan缩点)
题意:http://acm.hdu.edu.cn/showproblem.php?pid=2242 给你一个图,问你缩完点树上割边的做小绝对值差. 思路: 这题核算起来整整做了我一天(即24个小时)! ...
- 【Trie】Nikitosh 和异或
[参考博客]: LOJ#10051」「一本通 2.3 例 3」Nikitosh 和异或(Trie [题目链接]: https://loj.ac/problem/10051 [题意]: 找出两个不相交区 ...
- golang glog
原文链接:https://blog.csdn.net/u010857876/article/details/79094942 Flush log 产生后,会暂存在内存的buffer中.只有显示的调用 ...
- MVC授权不通过之后不执行任何自定义ActionFilter
如下一个Action [Authorize] [F1]//自定义过滤器,继承自ActionFilter public ActionResult Index() { return View(); } 如 ...
- div可以同时设置背景图片和背景颜色吗?
前言 当然可以同时设置 当图片背景色不透明时 情况一:当图片的长.宽 >= div的长.宽时 我们最终看到div背景是图片,之所以说是最终看到,是因为在页面加载时,我们先看到的div背景是颜色, ...