通过其他列对DevExpress GridControl进行排序

时间:2013-02-11 13:39:41

标签: wpf devexpress

我将服务器模式下的GridControl绑定到类数组(List<Product>)。数据部分取自数据库,这意味着ID取自数据库,但随后转换为代码中的名称(附加的只读属性)。

网格显示名称,而不是ID。但是当我点击网格标题时,我想按ID排序,即如果我点击“产品标题”标题,我实际上想要按“产品ID”排序。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以尝试对列表进行排序。

请尝试以下操作:

myDataSource.Sort((x,y) => x.ProductID.CompareTo(y.ProductID));
myGridView.RefreshData();

答案 1 :(得分:-1)

简单解决方案:

在网格视图数据源中添加ID column并按照链接在网格中实现排序。实现这一点的方法很少。 您也可以使用Sorting

grid.Columns["ID"].SortOrder = ColumnSortOrder.Ascending;

或使用Custom Sorting,如下所示:

Sorting Modes and Custom Sorting

grid.ItemsSource = your list datasource;
grid.PopulateColumns();
grid.Columns[0].SortMode = ColumnSortMode.Custom;
grid.SortBy(grid.Columns[0]);  

然后处理GridControl.CustomColumnSort Event

private void grid_CustomColumnSort(object sender, CustomColumnSortEventArgs e) {
    e.Result = Comparer<int>.Default.Compare(e.ListSourceRowIndex1,
        e.ListSourceRowIndex2);

    e.Handled = true;
}

参考文献:
Sorting in Code
How to: Implement Custom Sorting