金喜正规买球

界面控件DevExpress WinForms中文教程:Data Grid - 过滤和定位行API

翻译|使用教程|编辑:龚雪|2025-09-10 10:16:07.997|阅读 1 次

概述:本教程主要为大家介绍DevExpress WinForms数据网格控件中的过滤器行功能,欢迎下载最新版组件体验!

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

相关链接:

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

本教程提供了有关DevExpress WinForms Grid的API信息,该API运行您过滤数据并定位行。在本文中您将了解如何将过滤条件应用于整个视图或单个列,如何清除现有过滤条件,以及如何按单元格值定位行或显示文本。

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

DevExpress技术交流群11:749942875      欢迎一起进群讨论

过滤行API

DevExpress WinForms Grid的API允许您对视图或单个列应用过滤条件,本教程将通过把Click处理程序分配给View Filtering(视图过滤)和Column Filtering(列过滤)组中的按钮来展示这两种方法。

将过滤器应用于视图

首先,处理View Filtering组中Apply Filter按钮的Click事件。在事件处理程序中,将过滤器表达式分配给视图的属性。

过滤器表达式包含由OR和AND逻辑运算符组合的三个子句,第一和第二子句用括号分组,过滤条件使用各种比较运算符,例如大于或不等于。日期-时间常量必须用“#”字符封装,而字符串常量必须用单引号括起来。

C#

private void btn_ApplyViewFilter_ItemClick(object sender, ItemClickEventArgs e) {
gridView.ActiveFilterString = "([UnitPrice] < 20 OR [OrderDate] >= #06/1/2015#) AND [ProductName] <> 'Chang'";
}

现在为Clear Filter按钮编写事件处理程序。要清除视图及其所有列的过滤器设置,请调用视图属性的clear方法。

C#

private void btn_ClearViewFilter_ItemClick(object sender, ItemClickEventArgs e) {
gridView.ActiveFilter.Clear();
}

运行应用程序来查看结果,点击Apply Filter按钮,选择单价小于20或订单日期大于6月1日且产品名称不是“chang”的记录。网格将显示过滤器表达式中涉及的列的过滤器按钮,但是这些列中的过滤器下拉列表不包含可清除过滤器的项。

DevExpress WinForms中文使用教程图集

单击Clear Filter按钮来删除整个视图中得过滤器设置。

将过滤器应用于列

关闭应用程序并切换到 Column Filtering组,处理Apply Filter按钮的Click事件,来选择单价大于20且小于30的记录。为此,使用所需的过滤条件创建一个新的对象,并将其分配给Unit Price列的属性。

C#

private void btn_ApplyColumnFilter_ItemClick(object sender, ItemClickEventArgs e) {
string filterString = "[UnitPrice] > 20 AND [UnitPrice] < 30";
gridView.Columns["UnitPrice"].FilterInfo = new ColumnFilterInfo(filterString);
}

在ClearFilter按钮的Click事件处理程序中,调用目标列的方法。

C#

private void btn_ClearColumnFilter_ItemClick(object sender, ItemClickEventArgs e) {
gridView.Columns["UnitPrice"].ClearFilter();
}

运行应用程序并单击Column Filtering组中的Apply Filter按钮,来根据Unit Price列过滤数据。现在,目标列的下拉列表包含清除列过滤器的(All)项。

DevExpress WinForms中文使用教程图集

通过单击相应的Clear filter按钮,删除应用于该列的过滤器。

要更改过滤器面板中显示的文本,请向对象构造函数添加一个参数。

C#

private void btn_ApplyColumnFilter_ItemClick(object sender, ItemClickEventArgs e) {
string filterString = "[UnitPrice] > 20 AND [UnitPrice] < 30";
string displayText = "[UnitPrice] Is between $20.00 and $30.00";
gridView.Columns["UnitPrice"].FilterInfo = new ColumnFilterInfo(filterString, displayText);
}

再次运行应用程序来查看结果,当您单击Column Filtering组中的Apply Filter按钮时,网格将根据Unit Price列筛选数据,并在过滤器面板中显示指定的文本。

DevExpress WinForms中文使用教程图集
定位行API

返回到设计时,为Locate Row按钮编写代码。

按单元格值定位行

 用三个参数调用View的方法:第一个参数指定搜索开始的行句柄;第二个命令将搜索范围缩小到特定列,第三个命令指定搜索值。Category列使用就地编辑器,它将底层整数值表示为带有图像的字符串。值1对应于“饮料”类别,找到行后,通过设置视图的属性将焦点移动到该行。

C#

private void btn_LocateRow_ItemClick(object sender, ItemClickEventArgs e) {
int rowHandle = gridView.LocateByValue(gridView.FocusedRowHandle + 1, gridView.Columns["Category"], 1);
gridView.FocusedRowHandle = rowHandle;
}

运行应用程序并单击Locate Row按钮,因此网格将关注Category列中最近的包含“Beverages”的行,随后的单击遍历带有“Beverages”类别的所有行。

通过显示文本定位行

 关闭应用程序并修改处理程序代码,以便通过显示文本定位行。要做到这一点,使用方法并传递“Beverages”字符串作为第三个参数。

C#

private void btn_LocateRow_ItemClick(object sender, ItemClickEventArgs e) {
int rowHandle = gridView.LocateByDisplayText(gridView.FocusedRowHandle + 1, gridView.Columns["Category"], "Beverages");
gridView.FocusedRowHandle = rowHandle;
}

再次运行应用程序并单击Locate Row按钮来查看结果。


关于慧都科技

慧都是⼀家⾏业数字化解决⽅案公司,专注于软件、⽯油与⼯业领域,以深⼊的业务理解和⾏业经验,帮助企业实现智能化转型与持续竞争优势。

慧都科技是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@fc6vip.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP