如何在 DevExpress GridView 上设置默认排序

问题描述 投票:0回答:6

在.net WinForm上,DevExpress的GridControl/GridView绑定在DataSet上,如何指定默认排序顺序?当没有带有 SortOrder 的可见 GridColumn 时使用的一个。

默认情况下,我在隐藏的 DateTimeStamp GridColumn 上的视图上设置了排序。如果用户单击某列,它当然会被用户覆盖。 用户可以使用列上的菜单或按住 Control 键单击列来“清除排序”。这样做时,行不再排序(或者可能按 PK?),而我希望它们按 DateTimeStamp 排序。

有什么想法吗?也许通过插入代码在用户“清除排序”时收到通知?我可以使用 GridView.PopupMenuShowing 和 GridStringId.MenuColumnClearSorting 来处理用户单击菜单的情况。但它不处理 Control+单击的情况。

有人遇到同样的问题并找到(简单的)解决方案吗?

.net gridview devexpress xtragrid gridcontrol
6个回答
2
投票

如果我是你,我会根据所需的列对网格的数据源进行排序。在这种情况下,如果最终用户清除了 gridView 的排序条件,则数据将按照您的 DataSource 指定的顺序显示。

更新 这是应该适合您的代码:

DataView dv = yourDataTable.DefaultView;
dv.Sort = "SomeField";
gridControl.DataSource = dv;

另外,请查看以下 MSDN 文章:

DataView.Sort 属性


1
投票

禁用最终用户排序不是最简单的吗?或者我是否误解了您的问题 - 即您是否希望在默认排序之后应用它们的排序?


1
投票

只需将其放在构造函数的

InitializeComponent();
之后

GridView1.Columns["FieldName"].SortOrder = ColumnSortOrder.Ascending;

0
投票

您可以在

GridView.EndSorting
事件上添加事件处理程序,并在该处理程序中检查是否有任何列具有
SortIndex >= 0
。如果没有,您可以自行设置排序。


0
投票

根据 Devexpress 支持中心的这个答案如何以编程方式对 GridView 多列进行排序?

以下代码可用于此目的:

<your GridView>.SortInfo.AddRange(new DevExpress.XtraGrid.Columns.GridColumnSortInfo[] {  
       new DevExpress.XtraGrid.Columns.GridColumnSortInfo(<your first GridColumn>, DevExpress.Data.ColumnSortOrder.Ascending),  
       new DevExpress.XtraGrid.Columns.GridColumnSortInfo(<your second GridColumn>, DevExpress.Data.ColumnSortOrder.Ascending)});  

-3
投票

GridControl.SortBy(DateTimeStampColumn, ColumnSortOrder.降序);

© www.soinside.com 2019 - 2024. All rights reserved.