如何在Ria Silverlight中对[include] entitycollection进行排序

时间:2012-03-19 20:06:35

标签: silverlight datagrid ria

我在rowdetails中有另一个datagrid的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);
}

主数据网格的详细信息页中的数据网格按以下方式填充: 首先,我捕获以下事件并获取详细信息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();
}

实际上有三个数据网格细节/细节 任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分: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);

然后摆脱尝试创建视图的其他事件。