2012-03-19 28 views
0

我有在rowdetails另一個數據網格DataGrid和我不能排序的詳細信息視圖 我曾嘗試以下,但沒有成功:(如何將[包括] entitycollection在地頭的Silverlight排序

主要填充DataGrid以下方式:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    NamskeidinDomConTxt = new Namskeidin_DomainContext(); 

    this.NamskeidinDomConTxt.Load(this.NamskeidinDomConTxt.GetNamskeidQuery(), LoadBehavior.RefreshCurrent, loadOperation => 
     { 
      PagedCollectionView pcView = new PagedCollectionView(loadOperation.Entities); 
      pcView.SortDescriptions.Add(new SortDescription("Heiti", ListSortDirection.Ascending)); 
      namskeidDataGrid.ItemsSource = pcView; 
     }, null); 
} 

在主數據網格按以下方式填充的detailsrow數據網格: 首先,我趕上了以下事件,並得到詳細的DataGrid

private void namskeidsHlutarDataGrid_RowDetailsVisibilityChanged(object sender, DataGridRowDetailsEventArgs e) 
     { 
      verkefniDataGrid = (e.DetailsElement as FrameworkElement).FindName("VerkefniDataGrid") as DataGrid; 
      Verkefni_DomConTxt = new Verkefni_DomainContext(); 
} 

,然後將這個事件fiers,所以我可以填補細節數據網格時,我已經得到了ID:

private void namskeidsHlutarDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 

    DataGrid dataGrid = sender as DataGrid; 
    var item = dataGrid.SelectedItem; 
    if (item != null) 
    { 
     nHlutaId = ((Entity)item).GetIdentity().ToString(); 
     Verkefni_DomConTxt.Load(Verkefni_DomConTxt.GetVerkefniQuery().Where(v => v.NamskeidsHluta_ID == nHlutaId), 
     LoadBehavior.RefreshCurrent, loadOperation => 
      { 
       verkefniDataGrid.ItemsSource = loadOperation.Entities; 
      }, null); 
    } 
} 


private void GridName_RowDetailsVisibilityChanged(object sender, DataGridRowDetailsEventArgs e) 
{ 
var dataGrid = (e.DetailsElement as FrameworkElement).FindName("detailsDataGrid") as DataGrid; 
PagedCollectionView pcView = new PagedCollectionView(dataGrid.ItemsSource as IEnumerable); 
pcView.GroupDescriptions.Clear(); 
pcView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending)); 
pcView.Refresh(); 
} 

有actualy 3 DataGrid的細節/細節 誰能幫助我?

回答

0

您正在創建一個新的PagedCollectionView,但您的DataGrid的ItemsSource仍然綁定到普通的IEnumerable。您需要將ItemsSource綁定到PagedCollectionView。

更新:因此,根據您更新的代碼,您應該像加載父網格一樣加載子網格。因此,而不是:

Verkefni_DomConTxt.Load(Verkefni_DomConTxt.GetVerkefniQuery().Where(v => v.NamskeidsHluta_ID == nHlutaId), LoadBehavior.RefreshCurrent, 
loadOperation => { verkefniDataGrid.ItemsSource = loadOperation.Entities;}, null); 

你可能只是在這裏創建自己的數據視圖,並設置項目源指向它:

Verkefni_DomConTxt.Load(Verkefni_DomConTxt.GetVerkefniQuery().Where(v => v.NamskeidsHluta_ID == nHlutaId), LoadBehavior.RefreshCurrent, 
loadOperation => { 
    PagedCollectionView pcView = new PagedCollectionView(loadOperation.Entities);   
    pcView.GroupDescriptions.Clear();   
    pcView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending)); 
    verkefniDataGrid.ItemsSource = pcView; 
    }, null); 

然後擺脫試圖創建視圖的其他事件。

+0

嗨,謝謝你的回覆。我曾嘗試使用PagedCollectionView pcView = dataGrid.ItemsSource作爲PagedCollectionView但返回null。你能推薦一種方法來實現這個: – Arni 2012-03-20 12:38:32

+0

很難知道從哪裏開始,因爲你沒有提供很多代碼。 ItemsSource綁定設置如何擺在首位? – Bryant 2012-03-20 17:03:59

+0

嗨科比我把一些更多的代碼在這個問題上希望有幫助,謝謝 – Arni 2012-03-20 20:43:47