2009-02-24 34 views
3

我需要能夠從成千上萬的可能結果中將結果頁面加載到網格中。我想從服務器獲取五十頁的數據,使用SQL Server對數據進行排序,然後將其返回以綁定到數據網格。當用戶通過單擊列標題對數據網格中的dta進行排序時,我需要檢測這個並在返回數據庫之前確定新的順序。我可以檢測到在Silverlight中排序的datagrid列嗎?

回答

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; 
相關問題