0

我正在使用 WPF DataGrid 程序(C#,VS 2010)生成、绑定列,并且 DataGrid 不会正确排序数据。

CanUserSortColumns 设置为 true。SortMemberPath 设置为与网格中显示的文本相同的属性。

不管用户对哪一列进行排序,尽管排序图标显示在相应的列上,DataGrid 只是交替第一列的排序顺序。

column.Header = departmentColumn.ColumnHeader;
column.Width = departmentColumn.ColumnWidth;
column.Binding = new Binding("Cells[" + departmentColumn.Ordinal.ToString() + "]");
column.SortMemberPath = "DisplayString";

我对 DataGrid 显示或错误使用的任何其他数据没有任何问题,所以我很难过。为什么排序只考虑第一列中的文本,而其他所有内容都绑定到相应列中的数据?

4

3 回答 3

2

这就是我对数据网格进行排序的方式,也许它会有所帮助

Dim cv As ICollectionView = CollectionViewSource.GetDefaultView(dgMyDataGrid.ItemsSource)
cv.SortDescriptions.Clear()
cv.SortDescriptions.Add(New SortDescription("iOrderNum", ListSortDirection.Ascending))
cv.Refresh()
于 2013-08-20T15:46:01.183 回答
0

在今天花了几个小时之后,我几乎在发布问题后立即自己找到了答案。

我不得不改变:

column.SortMemberPath = "DisplayString";

至:

column.SortMemberPath = "Cells[" + departmentColumn.Ordinal.ToString() + "].DisplayString";

我猜 SortMemberPath 并不总是自动绑定到当前数据项。

我感谢任何已经开始为此工作的人。

于 2013-08-20T15:46:39.950 回答
0

根据 MSDN 上的 DataGridColumn.SortMemberPath 属性页,SortMemberPath属性设置

要排序的数据项成员的路径

这会让我相信你不应该设置这个属性,除非你只想按你设置它的一列排序。

于 2013-08-20T15:46:47.853 回答