【问题标题】:Secondary sorting in DevExpress GridViewDevExpress GridView 中的二次排序
【发布时间】:2012-02-06 15:01:18
【问题描述】:
我在我的应用程序中使用了 DevExpress GridView(我的公司仍然使用旧的 DevExpress v7.2)。我有四列,其中之一是“优先级”列。 Status 是一个具有三个可能值的枚举:Critical、High 和 Low。
当用户想按此列对 GridView 进行排序时,我想按严重性级别排序,但也在严重性为“Critical”的项目内(例如)我希望值按日期排序,从最早到最新的。
如果有人能提供帮助,那就太好了。
谢谢!
约翰。
【问题讨论】:
标签:
c#
sorting
gridview
devexpress
【解决方案1】:
我不确定您是如何实现排序的,但您总是可以拦截在“优先级”列上查找排序,然后在日期列上附加次要排序。
我以前做过这种类型的事情,我的对于你想要做的事情来说太过分了,但基本代码是这样的:
public void GridView_ExampleSorting(object sender, GridViewSortEventArgs e)
{
GridView gv = (GridView)sender;
DataTable dataTable = gv.DataSource as DataTable;
if (dataTable != null)
{
string sortdirection = GetNextSortDirection(e.SortExpression);
DataView dataView = new DataView(dataTable);
dataView.Sort = e.SortExpression + " " + sortdirection;
if (e.SortExpression.ToString() == "priority")
dataView.Sort += " date DESC";
gv.DataSource = dataView;
gv.PageIndex = 0;
gv.DataBind();
}
}
【解决方案2】:
在较新版本的网格控件中,您可以按住 ctrl 键并单击第 2 列标题以按该列和第 1 列排序。但我不确定它是否也适用于网格的第 7 版。
更新:它实际上是 shift 键。请看here
【解决方案3】:
网格也有 SortBy(columnName) 方法