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

.net 如何在DevExpress GridView上设置默认排序,.net,gridview,devexpress,xtragrid,gridcontrol,.net,Gridview,Devexpress,Xtragrid,Gridcontrol,在.net WinForm上,DevXPress的GridControl/GridView绑定在数据集上,如何指定默认排序顺序?当没有带排序器的可见GridColumn时使用的一个 默认情况下,我在隐藏的DateTimeStamp GridColumn的视图上设置了排序。当然,如果用户单击一列,它将被用户覆盖。 用户可以使用列上的菜单或在按下控制键的同时单击列来“清除排序”。当这样做时,行不再排序(或者可能是按PK排序),而我希望它们按DateTimeStamp排序 有什么想法吗?可能是在用户“

在.net WinForm上,DevXPress的GridControl/GridView绑定在数据集上,如何指定默认排序顺序?当没有带排序器的可见GridColumn时使用的一个

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

有什么想法吗?可能是在用户“清除排序”时插入要通知的代码?我可以使用GridView.PopupMenuShow和GridStringId.MenuColumnClearOrting来处理用户单击菜单的情况。但它不处理控件+单击的情况


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

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

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

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

更新 以下是适用于您的代码:

DataView dv = yourDataTable.DefaultView;
dv.Sort = "SomeField";
gridControl.DataSource = dv;
另外,请查看以下MSDN文章:


GridControl.SortBy(DateTimeStampColumn,ColumnSortOrder.Descending)

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

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

我希望用户能够排序网格,并有可能返回到默认排序时,没有用户过滤器。如果用户未指定筛选器,我希望应用筛选器。我的数据源是System.data.DataTable。与List不同,dataTable(待检查)上没有Sort()方法。可能是通过更改表的PrimaryKey,但它对现有代码进行了大量更改,只需很少的时间。将首先尝试EndSorting事件解决方案。EndSorting解决方案不起作用。更改PrimaryKey解决方案无效。您的解决方案使用dataTable.Rows.InsertAt(row,position)和Remove()来维护每次更新的行顺序。我想我可以创建一个使用dataTable的过程。选择(“,”LastUpdateDate,Id“)并同时循环结果和原始表,以删除不在其位置的行,重新创建它并将其插入正确的位置。我担心每次更新后,我的cells编辑器都会出现一些焦点问题。有没有更简单的解决方案?如果我的数据源不是DataView,或者不是DataView,该怎么办?它不起作用:GridView.EndSorting不是在“清除排序”中提出的(简单地说:
((DataView)gridControl.DataSOurce.Sort=“DateTimeStamp DESC”