DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
本文将展示一些示例,展示说明如果基础值与网格单元格中显示的文本不同,如何根据列对数据进行排序,从而产生意想不到的结果。以类似的方式,您将看到如果将数值列或日期-时间列的值视为字符串,它们的排序顺序是如何变化的。您将了解网格如何确定何时使用单元格显示文本或使用实际列值对数据进行排序。本教程还将向您展示可用于手动从一种模式切换到另一种模式的属性。
获取DevExpress WinForms v25.1正式版下载
DevExpress技术交流群11:749942875 欢迎一起进群讨论
默认操作
网格通常按照您期望的方式对数据进行排序,当对包含文本数据(如Name)的列进行排序时,它将按字母顺序排序。如果对数字列或日期-时间列进行排序,将得到从最小到最大的数字或从最早到最近的日期。

现在看一下Priority列,它使用单元格编辑器将底层优先级值1、2和3转换为相应的文本描述:“Low”、“Medium”和“High”。当您单击列标题时,希望这些值从Low到High排序,或者反之亦然。实际上,数据是按字母顺序排序的,“High”后跟“Low” ,然后才是“Medium”。

使用LookUp和ImageComboBox编辑器对列进行排序
跳转到设计时并修复Priority列的排序模式,首先看看分配的ImageComboBoxEdit就地编辑器是如何设置的。展开GridColumn.ColumnEdit 属性,并通过单击RepositoryItemImageComboBox.Items属性的省略号按钮来访问编辑器项集合,看看ComboBoxItem.Value 和ImageComboBoxItem.Description属性,“Low”对应1,“Medium”对应2,“High”对应3,现在可以确定网格可以根据这些基础值对数据进行正确排序。

访问Priority列的设置,看到它的GridColumn.SortMode属性被设置为ColumnSortMode.Default。

换句话说,网格视图自动决定使用哪种排序。对于使用ImageComboBoxEdit或LookUpEdit编辑器的列,这意味着按显示文本而不是值排序。这是有意义的,因为这些列通常显示由ID从另一个表中提取的名称,您更愿意按字母顺序组织这些名称,而不是按看不到的ID组织这些名称。另一方面,这不适用于按ID排序有意义而按字母排序没有意义的状态。因此要强制按值排序,请将GridColumn.SortMode属性切换为ColumnSortMode.Value。
运行应用程序并单击Priority列标题,因此这些列单元格根据其编辑值1、2和3按升序排序。

排序使用其他编辑器类型的列
对于任何其他编辑器类型,网格视图对值进行排序——这是预期的操作,数字从小到大,日期从最早到最近。如果要从值排序切换到显示文本模式,那么10或100将出现在2之前,因为1小于2,字符串只是逐个字符进行比较。要启用此模式,您需要手动将GridColumn.SortMode属性切换为ColumnSortMode.DisplayText。
要实际尝试此操作,请对Created Date列进行排序,以确保按照预期从最早到最近的顺序排列日期。之后跳转到显示列设置的属性网格,并将GridColumn.SortMode属性更改为ColumnSortMode.DisplayText。看看“11”和“12”是如何出现在“2”之前的,并注意到年份部分似乎没有被考虑在内。

更多DevExpress线上公开课、中文教程资讯请上中文网获取
关于慧都科技
慧都是⼀家⾏业数字化解决⽅案公司,专注于软件、⽯油与⼯业领域,以深⼊的业务理解和⾏业经验,帮助企业实现智能化转型与持续竞争优势。
慧都科技是DevExpress的中国区的合作伙伴,DevExpress作为用户界面领域的优秀产品,帮助企业高效构建权限管理、数据可视化(如网格/图表/仪表盘)、跨平台系统(WinForms/ASP.NET/.NET MAUI)及行业定制解决方案,加速开发并强化交互体验。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]
本文地址:https://www.devexpresscn.com/post/5518.html
相关产品: DevExpress WinForms Subscription, DevExpress Universal Subscription,
联系电话:023-68661681



返回