如何在Ria Silverlight中对[include]实体集合进行排序



我在rowdetails中有一个带有另一个数据网格的数据网格,我无法对details视图进行排序我尝试过以下方法,但没有成功:(

主数据网格以以下方式填充:

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

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

然后这个事件生成器,这样当我得到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();
}

实际上有三个数据网格详细信息有人能帮我吗?

您正在创建一个新的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);

然后去掉试图创建视图的其他事件。

最新更新