DevExpress WPF中文教程:如何解决排序、过滤遇到的常见问题?(一)

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。

接下来将介绍如何解决DevExpress GridControl中排序和过滤操作最常见的问题。

获取DevExpress v24.1正式版下载(Q技术交流:532598169)

排序和过滤不起作用

如果在DevExpress GridControl中排序或过滤不起作用,请检查以下可能导致的原因。

GridColumn绑定到一个复杂对象

问题

DevExpress WPF GridControl可以对支持比较操作符的类型进行排序和过滤,这意味着支持在网格单元格中显示的大多数类型,一些示例是int, string, DateTime和decimal。

另一方面,DevExpress GridControl不能比较复杂的或自定义类型(如MyClass),除非您覆盖该类型的比较操作符。

解决方案

使用以下解决方案当中的一个:

  • 将列绑定到复杂类型的嵌套属性。
    ColumnBase.FieldName中使用点来指定单个嵌套属性的复杂路径:

XAML

<dxg:GridColumn FieldName="Customer.Name"/>

使用Bands在一个标题下显示多个嵌套属性。

GridColumn绑定到一个集合

问题

DevExpress GridControl不能比较集合,对绑定到集合类型的列禁用排序。

解决方案

确保列绑定到数据源字段。

使用以下解决方案当中的一个:

使用GridColumnBinding且第一行的Bound属性为Null

问题

如果列使用ColumnBase.Binding属性获取数据,DevExpress GridControl将检查第一行以确定属性类型。如果第一行中的字段值为空,则DevExpress GridControl无法生成属性描述符。

如果列使用ColumnBase.FieldName属性并且绑定的属性类型是object,则可能出现类似的问题。

解决方案

要让DevExpress GridControl知道实际的列类型,可以设置ColumnBase.UnboundDataType属性。如果使用ColumnBase.FieldName属性绑定列,请使用绑定,然后设置UnboundDataType。

XAML

xmlns:sys="clr-namespace:System;assembly=mscorlib"

<dxg:GridColumn Binding="{Binding SomeProperty, Mode=TwoWay}" UnboundDataType="{x:Type sys:String}"/>

服务器模式与未绑定列一起使用

问题

使用GridControl.CustomUnboundColumnDataGridControl.CustomUnboundColumnDataCommand填充值的未绑定列不能在服务器模式下排序或过滤。

解决方案

使用ColumnBase.UnboundExpression属性填充列。

注意 :使用ColumnBase.Binding属性填充的列将作为未绑定处理,因为绑定可以包含自定义转换器。

使用虚拟资源

问题

如果使用虚拟源,则排序和过滤不起作用。

解决方案

要在虚拟源中启用排序和过滤,请按照下面帮助主题中描述的步骤操作:

数值按字符串排序/过滤

问题

DevExpress GridControl将数值作为字符串进行排序和过滤,发生此操作是因为ColumnBase.ColumnFilterMode被设置为DisplayText。

解决方案

ColumnBase.ColumnFilterMode设置为Value。

相关推荐
玉面小君19 小时前
从 WPF 到 Avalonia 的迁移系列实战篇6:Trigger、MultiTrigger、DataTrigger 的迁移
wpf·avalonia
招风的黑耳2 天前
Java生态圈核心组件深度解析:Spring技术栈与分布式系统实战
java·spring·wpf
lfw20192 天前
WPF 数据绑定模式详解(TwoWay、OneWay、OneTime、OneWayToSource、Default)
wpf
Magnum Lehar2 天前
3d wpf游戏引擎的导入文件功能c++的.h实现
3d·游戏引擎·wpf
FuckPatience3 天前
WPF Telerik.Windows.Controls.Data.PropertyGrid 自定义属性编辑器
wpf
almighty273 天前
C#WPF控制USB摄像头参数:曝光、白平衡等高级设置完全指南
开发语言·c#·wpf·usb相机·参数设置
军训猫猫头3 天前
12.NModbus4在C#上的部署与使用 C#例子 WPF例子
开发语言·c#·wpf
我要打打代码3 天前
在WPF项目中使用阿里图标库iconfont
wpf
拾忆,想起4 天前
Redisson 分布式锁的实现原理
java·开发语言·分布式·后端·性能优化·wpf
weixin_464078074 天前
wpf依赖注入驱动的 MVVM实现(含免费源代码demo)
wpf