2009-02-24 2 views
3

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

ответ

0

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

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

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

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

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

Tjipke

0

Вы можете с помощью PagedCollectionView и отливки SortDescriptions свойства к 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; 
Смежные вопросы