在.net WinForm上,DevExpress的GridControl / GridView绑定在DataSet上,如何指定默认的排序顺序?当没有带有SortOrder的可见GridColumn时使用的那个。
默认情况下,我在隐藏的DateTimeStamp GridColumn上的视图上设置了一个排序。如果用户点击列,当然会被用户覆盖。 用户可以使用列上的菜单或按住Control键的同时单击列来“清除排序”。这样做时,Rows不再排序(或者可能是PK?),而我希望它们按DateTimeStamp排序。
有什么想法吗?也许通过插入代码来在用户“清除排序”时收到通知?我可以使用GridView.PopupMenuShowing和GridStringId.MenuColumnClearSorting来处理用户点击菜单案例。但是它没有处理Control + click的情况。
有人遇到同样的问题并找到(简单)解决方案吗?
答案 0 :(得分:2)
如果我是你,我会根据所需的列对网格的DataSource进行排序。在这种情况下,如果最终用户清除了gridView的排序条件,则数据将按照DataSource指定的顺序显示。
<强>更新强> 这是适合您的代码:
DataView dv = yourDataTable.DefaultView;
dv.Sort = "SomeField";
gridControl.DataSource = dv;
另外,请查看以下MSDN文章:
答案 1 :(得分:1)
禁用最终用户排序是不是最简单?或者我误解了您的问题 - 即您是否希望在默认排序后应用排序?
答案 2 :(得分:1)
将InitializeComponent();
放在构造函数
GridView1.Columns["FieldName"].SortOrder = ColumnSortOrder.Ascending;
答案 3 :(得分:0)
您可以在GridView.EndSorting
事件上添加事件处理程序,并在该处理程序中检查是否有任何列具有SortIndex >= 0
。如果没有,您可以设置自己的排序。
答案 4 :(得分:-3)
GridControl.SortBy(DateTimeStampColumn,ColumnSortOrder.Descending);