3

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

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

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

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

4

5 回答 5

2

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

更新 这里是应该为你工作的代码:

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

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

DataView.Sort 属性

于 2011-05-06T10:52:03.883 回答
1

把它InitializeComponent();放在构造函数之后

GridView1.Columns["FieldName"].SortOrder = ColumnSortOrder.Ascending;
于 2015-01-13T16:48:29.813 回答
1

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

于 2011-05-05T19:10:03.353 回答
0

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

于 2011-05-05T17:09:56.873 回答
-3

GridControl.SortBy(DateTimeStampColumn, ColumnSortOrder.Descending);

于 2013-05-16T09:51:01.990 回答