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。

相关推荐
就是有点傻39 分钟前
WPF中ImageBrush和Image的区别
wpf
冷眼Σ(-᷅_-᷄๑)40 分钟前
WPF如何使用外部字体
wpf
月落.1 天前
WPF的<ContentControl>控件
wpf
就是有点傻1 天前
WPF中的依赖属性
开发语言·wpf
wangnaisheng1 天前
【WPF】把一个Window放在左上角/右上角顶格显示
wpf
WineMonk1 天前
.NET WPF CommunityToolkit.Mvvm框架
.net·wpf·mvvm
月落.1 天前
WPF中的INotifyPropertyChanged接口
wpf
界面开发小八哥1 天前
界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置
.net·wpf·界面控件·devexpress·ui开发
平凡シンプル1 天前
WPF 打包
wpf
VickyJames1 天前
基于XAML框架和跨平台项目架构设计的深入技术分析
wpf·开源分享·unoplatform·winui3·项目架构