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。

相关推荐
hqwest35 分钟前
C#WPF实战出真汁08--【消费开单】--餐桌面板展示
c#·wpf·ui设计·wpf界面设计
orangapple38 分钟前
WPF 打印报告图片大小的自适应(含完整示例与详解)
c#·wpf
三千道应用题21 小时前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf
✎ ﹏梦醒͜ღ҉繁华落℘2 天前
开发WPF项目时遇到的问题总结
wpf
hqwest3 天前
C#WPF实战出真汁06--【系统设置】--餐桌类型设置
c#·.net·wpf·布局·分页·命令·viewmodel
Vae_Mars3 天前
WPF中使用InputBindings进行快捷键绑定
wpf
hqwest3 天前
C#WPF实战出真汁05--左侧导航
开发语言·c#·wpf·主界面·窗体设计·视图viewmodel
hqwest3 天前
C#WPF实战出真汁01--项目介绍
开发语言·c#·wpf
wuty0073 天前
WPF 实现支持动态调整高度的文本显示控件
wpf·scrollviewer·extentheight·自动高度控件·动态调整高度
界面开发小八哥6 天前
DevExpress ASP.NET Web Forms v25.1新版本开发环境配置要求
c#·asp.net·界面控件·devexpress·ui开发