DevExpress WinForms中文教程:Data Grid - 过滤编辑器

DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

DevExpress WinForms Grid控件附带了一个内置的Filter Editor(过滤编辑器对话框),允许最终用户使用树形过滤构建器界面或像Visual Studio IntelliSense一样带有提示的文本编辑器来构建任何复杂程度的过滤器标准。在本教程中,您将了解最终用户如何调用此对话框,哪些选项会影响其可用性,以及如何在显示对话框之前从代码中调用它并自定义它。

获取DevExpress WinForms v25.1正式版下载

调用过滤编辑器和创建简单的过滤器标准

要调用Filter Editor(过滤编辑器),右键单击任何列标题,并在上下文菜单中选择Filter Editor...。

默认情况下,Filter EditorFilter Editor(过滤编辑器)将过滤条件显示为树,其中各个节点表示简单的过滤条件。根节点是组合所有条件的逻辑运算符,任何过滤条件都由三部分组成:列名、标准操作符和操作数值。如果未过滤网格的数据,则编辑器将为所单击的列包含一个不完整的过滤条件。

单击数值框,在下拉列表中选择Medium。

单击OK关闭编辑器并应用更改。因此网格只显示优先级设置为Medium的记录,现在您可以使用Filter Panel(过滤面板)中的Edit Filter按钮来调用Filter Editor(过滤编辑器)。

要添加新的过滤条件,请单击根节点旁边的加号按钮(FilterEditor_EU_AddButton),这也可以通过单击逻辑运算符并选择Add Condition来完成。

在可用列列表中选择Name,然后使用Contains比较运算符并在值框中输入'vendor'字符串。单击Apply来过滤数据,而不关闭编辑器。

网格现在显示具有中等优先级的记录,名称中包含'vendor'。

删除过滤条件

现在通过单击FilterEditor_EU_DeleteButton按钮或在逻辑运算符的菜单中选择Clear All来删除所有过滤条件。

从多项目过滤条件中删除项目

用户可以从多项目过滤条件中选择特定的项目(例如,"Is Any Of"、"Is One Of")并删除它们,使用键盘或"Ctrl+Click"选择需要配置的项,按Delete删除项目。

构造复杂的过滤条件

现在可以创建更复杂的过滤条件,要创建一个新的条件组,请单击根逻辑操作符并选择Add Group。

将创建的逻辑运算符更改为OR。

在该组中创建两个新条件,这些条件将选择具有高优先级或状态设置为New的记录。以同样的方式,再创建一个带有两个条件的OR条件组,这些条件将选择"创建日期"介于1月1日和今天之间的记录,或者"固定日期"大于4月1日的记录。

单击OK,使用创建的标准过滤数据,您将在筛选面板中看到整个筛选条件。

更改过滤编辑器样式

现在尝试一个不同的过滤条件编辑器UI,在设计时,访问视图的设置,展开ColumnView.OptionsFilter,并将ColumnViewOptionsFilter.DefaultFilterEditorView属性设置为FilterEditorViewMode.Text

运行应用程序并调用过滤器编辑器,现在您可以直接在嵌入的富文本编辑器中输入过滤字符串。当输入过滤器时,会自动调用操作符和字段名的下拉列表,这很像Visual Studio的智能感知功能。

找到相同的属性并将编辑模式设置为FilterEditorViewMode.VisualAndText,过滤编辑器将在各自的选项卡中显示可视化和文本编辑器。

阻止最终用户调用过滤编辑器

如果您不希望最终用户从列标题菜单中调用对话框,请将ColumnViewOptionsFilter.AllowFilterEditor属性设置为false。

注意,过滤器面板的Edit Filter按钮也变得不可见。

在代码中调用和自定义过滤编辑器

返回到设计时,查看如何在代码中调用和自定义Filter Editor(过滤编辑器)。

在显示Show Filter Editor按钮的Click事件处理程序中,调用视图的ColumnView.ShowFilterEditor方法来可视样式调用过滤编辑器。

C#

cs 复制代码
private void btn_ShowFilterEditor_ItemClick(object sender, ItemClickEventArgs e) {
gridView.OptionsFilter.DefaultFilterEditorView = DevExpress.XtraEditors.FilterEditorViewMode.Visual;
gridView.ShowFilterEditor(null);
}

此外,处理视图的ColumnView.FilterEditorCreated事件,该事件在即将显示过滤器编辑器时引发。在事件处理程序中,使用事件的FilterControlEventArgs.FilterControl参数的FilterControl.AppearanceValueColor属性自定义值color。启用FilterControl.ShowOperandTypeIcon 选项,来允许将一列的值与其他列中的值或预定义常量进行比较。

C#

cs 复制代码
private void gridView_FilterEditorCreated(object sender, DevExpress.XtraGrid.Views.Base.FilterControlEventArgs e) {
e.FilterControl.AppearanceValueColor = Color.Red;
e.FilterControl.ShowOperandTypeIcon = true;
}

运行应用程序并单击Show Filter Editor按钮,在调用的编辑器中,添加一个新条件,然后单击现在显示在删除按钮左侧的操作数类型图标。

单击值框,选择Date and time constants ,并选择This year

将比较运算符更改为小于,添加另一个条件,选择"优先级"为"中等"的记录。请注意,该值是使用事件处理程序中指定的红色绘制的。


更多DevExpress线上公开课、中文教程资讯请上中文网获取

相关推荐
张人玉1 小时前
C#WPF UI路由事件:事件冒泡与隧道机制
ui·c#·wpf
档案宝档案管理2 小时前
档案宝:企业合同档案管理的“安全保险箱”与“效率加速器”
大数据·数据库·人工智能·安全·档案·档案管理
IT_Beijing_BIT3 小时前
TensorFlow Keras
人工智能·tensorflow·keras
mit6.8243 小时前
[手机AI开发sdk] 安卓上的Linux环境
人工智能·智能手机
Larry_Yanan3 小时前
QML学习笔记(五十)QML与C++交互:QML中单例C++对象
开发语言·c++·笔记·qt·学习·ui·交互
张较瘦_4 小时前
[论文阅读] AI + 教育 | AI赋能“三个课堂”的破局之道——具身认知与技术路径深度解读
论文阅读·人工智能
小雨青年4 小时前
Cursor 项目实战:AI播客策划助手(二)—— 多轮交互打磨播客文案的技术实现与实践
前端·人工智能·状态模式·交互
西西弗Sisyphus4 小时前
线性代数 - 初等矩阵
人工智能·线性代数·机器学习
王哈哈^_^4 小时前
【数据集】【YOLO】【目标检测】共享单车数据集,共享单车识别数据集 3596 张,YOLO自行车识别算法实战训推教程。
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
仙人掌_lz4 小时前
Multi-Agent的编排模式总结/ Parlant和LangGraph差异对比
人工智能·ai·llm·原型模式·rag·智能体