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

时间:2011-05-05 16:36:31

标签: .net gridview devexpress xtragrid gridcontrol

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

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

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

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

5 个答案:

答案 0 :(得分:2)

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

<强>更新 这是适合您的代码:

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

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

DataView.Sort Property

答案 1 :(得分:1)

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

答案 2 :(得分:1)

InitializeComponent();放在构造函数

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

答案 3 :(得分:0)

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

答案 4 :(得分:-3)

GridControl.SortBy(DateTimeStampColumn,ColumnSortOrder.Descending);