Могу ли я обнаружить столбец сетки данных, отсортированный в Silverlight? - PullRequest
3 голосов
/ 24 февраля 2009

Мне нужно иметь возможность загружать страницу результатов в сетку из многих десятков тысяч возможных результатов. Я хочу получить данные на пятидесяти страницах с сервера, используя SQL Server для сортировки данных, прежде чем возвращать их для привязки к сетке данных. Когда пользователь сортирует dta в сетке данных, щелкая заголовок столбца, мне нужно обнаружить это и определить новый порядок, прежде чем вернуться в базу данных.

Ответы [ 2 ]

0 голосов
/ 25 июля 2014

Вы можете использовать PagedCollectionView и привести свойство SortDescription к INotifyCollectionChanged. Затем вы слушаете событие CollectionChanged. Как это:

var collectionView = new PagedCollectionView(items);
(collectionView.SortDescriptions as INotifyCollectionChanged).CollectionChanged += (object sender, NotifyCollectionChangedEventArgs e) =>
{
  // This gets fired multiple times based on the previous sort and new sort
};
dataGrid.ItemsSource = collectionView;
0 голосов
/ 27 февраля 2009

Не думаю, что есть способ спросить сетку данных, по какому столбцу она отсортирована. Однако, глядя на http://blogs.msdn.com/scmorris/archive/2008/06/10/sorting-data-in-the-silverlight-datagrid.aspx, я вижу, что вы можете реализовать собственную сортировку при реализации ICollectionView для ваших элементов.

Так, может быть, вы могли бы реализовать ICollectionView для (обертки вокруг) ваших результатов?

Datagrid делает это внутренне, если вы устанавливаете его ItemSource в IList, так что, возможно, вы можете взглянуть на его реализацию, чтобы увидеть, как они это сделали? (см. внутренний класс Datagrids ListCollectionView с использованием отражателя)

Когда у вас есть ICollectionView, вы можете использовать его SortDescription, чтобы узнать текущую сортировку.

Надеюсь, это поможет вам в правильном направлении?

Tjipke

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...