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

wqsoz72f  于 2023-08-08  发布在  .NET
关注(0)|答案(6)|浏览(269)

在.net WinForm上,DevExpress的GridControl/GridView绑定在DataSet上,如何指定默认的排序顺序?当没有具有SortOrder的可见GridColumn时使用的一个。
默认情况下,我已经在隐藏的DateTimeStamp GridColumn上的视图上设置了排序。如果用户点击某个列,它当然会被用户覆盖。用户可以使用列上的菜单或在按下Control键的同时单击列来“清除排序”。当这样做时,行不再排序(或者按PK?),而我希望它们按DateTimeStamp排序。
有什么办法吗?也许通过插入代码来通知用户“清除排序”?我可以使用GridView.PopupMenuShowing和GridStringId.MenuColumnClearSorting来处理用户单击菜单的情况。但它不处理Control+click的情况。
有人遇到同样的问题并找到了(简单的)解决方案吗?

8fsztsew

8fsztsew1#

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

UPDATE下面是您应该可以使用的代码:

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

字符串
另外,请参阅下面的MSDN文章:
DataView.Sort Property

qco9c6ql

qco9c6ql2#

禁用最终用户排序不是最简单的吗?或者我误解了你的问题--即。你想要他们的排序在你的默认排序之后被应用吗?

lmyy7pcs

lmyy7pcs3#

把这个放在InitializeComponent();的构造函数后面

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

字符串

oymdgrw7

oymdgrw74#

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

6kkfgxo0

6kkfgxo05#

根据Devexpress支持中心How to sort GridView multiple columns programmatically?中的答案
以下代码可用于此目的:

<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)});

字符串
更多详情请访问Sorting in Code

bnl4lu3b

bnl4lu3b6#

GridControl.SortBy(DateTimeStampColumn,ColumnSortOrder.Descending);

相关问题