DevExpress WPF中文教程:如何解决排序、过滤遇到的常见问题?(二)
DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。
接下来将介绍如何解决DevExpress GridControl中排序和过滤操作最常见的问题。在上文中(点击这里回顾>>),我们为大家介绍了当使用DevExpress WPF网格控件时排序和过滤不起作用、数值按字符串排序/过滤等问题,本文将为大家介绍一些其他排序过滤常见的问题及解决方案,希望对大家有所帮助。
DevExpress技术交流群10:532598169 欢迎一起进群讨论
重复的值显示在过滤器弹出框中
问题
DevExpress WPF GridControl根据EditSettings (Mask, DisplayFormat, DisplayTextConverter)和CustomColumnDisplayText事件发送的信息显示过滤器值,如果多个单元格值具有相似的显示文本,GridControl将在过滤器弹出框中多次显示这些值。
解决方案
使用以下解决方案当中的一个:
- 设置ColumnBase.ColumnFilterMode为DisplayText。
- 更改显示文本设置来避免重复文本。
如果使用DisplayFormat对十进制值进行四舍五入,可能会在下拉过滤器中看到重复的值。为了避免这个问题,我们建议在DevExpress GridControl获取这些值之前将它们四舍五入,您可以使用以下解决方案当中的一种:
- 使用一个自定义转换器来四舍五入这个Binding定义中的值:
XAML
<dxg:GridColumn Header="Growth" Binding="{Binding Growth, Converter={StaticResource RoundConverter}, Mode=TwoWay}"/>
您可以创建自己的自定义转换器,也可以使用本示例中的自定义转换器。
- 使用未绑定表达式:
XAML
<dxg:GridColumn Header="Growth" FieldName="GrowthUnbound" UnboundType="Decimal" UnboundExpression="Round([Growth], 2)" ReadOnly="True"/>
- 使用CustomUnboundColumnData(后面的代码)或CustomUnboundColumnDataCommand (MVVM):
XAML
<Grid> <dxg:GridControl ItemsSource="{Binding Source}" CustomUnboundColumnDataCommand="{Binding UnboundColumnDataCommand}"> <dxg:GridControl.Columns> <dxg:GridColumn FieldName="Name"/> <dxg:GridColumn Header="Growth" FieldName="GrowthUnbound" UnboundType="Decimal"/> </dxg:GridControl.Columns> </dxg:GridControl> </Grid>
GridControl不根据单元格中显示的文本对值进行排序/筛选
问题
当您使用自定义CellTemplate、CellDisplayTemplate或CellEditTemplate时,会出现此问题,这些模板不影响排序和筛选。
解决方案
要更改单元格显示文本,使用EditSettings (Mask, DisplayFormat, DisplayTextConverter)或 CustomColumnDisplayText事件;要按显示文本排序和筛选,请设置请将ColumnBase.ColumnFilterMode 和 ColumnBase.SortMode 设置为DisplayText。
在数据源中更新后过滤/排序不会刷新
问题
当在数据源级别更新项属性时,DevExpress WPF GridControl不会刷新过滤、排序和分组。
解决方案
要自动重新应用排序/过滤/分组,启用GridControl.AllowLiveDataShaping选项。
未引发CustomColumnSort事件
问题
由于以下原因,事件可能不会触发:
- ColumnBase.SortMode属性未设置为Custom。
- 使用GridControl和TreeListView,并处理GridControl.CustomColumnSort事件。
解决方案
- 将ColumnBase.SortMode属性设置为Custom。
- 使用TreeListView事件进行定制排序:TreeListView.CustomColumnSort。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2023-09-13 【盘点】设计师更偏爱Telerik & Kendo UI界面库的4个理由!
2023-09-13 界面控件DevExpress WPF TreeMap,轻松可视化复杂的分层结构数据!
2021-09-13 强大的Visual Studio插件CodeRush v21.1.7已正式发布
2017-09-13 使用MyEclipse开发Java EE应用:企业级应用程序项目(上)