2013-02-11 33 views
0

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

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

我如何做到这一点?

回答

0

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

尝试以下操作:

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

简单的解决方案:

添加ID column在网格视图DataSource和按照链路来实现网格中的排序。有很少的方法来实现这一点。 您可以使用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

+0

Downvoter护理评论,让其他可以得到什么是错的解决方案? – 2014-10-14 06:01:05