【问题标题】:Can I detect a datagrid column being sorted in Silverlight?我可以检测到在 Silverlight 中排序的数据网格列吗?
【发布时间】:2010-10-09 12:38:00
【问题描述】:

我需要能够从数以万计的可能结果中将结果页面加载到网格中。我想从服务器获取 50 页的数据,使用 SQL Server 在返回数据以绑定到数据网格之前对数据进行排序。当用户通过单击列标题对数据网格中的 dta 进行排序时,我需要检测到这一点并确定新的顺序,然后再返回数据库。

【问题讨论】:

    标签: silverlight sorting datagrid


    【解决方案1】:

    我认为没有办法询问数据网格在哪一列上排序。但是查看http://blogs.msdn.com/scmorris/archive/2008/06/10/sorting-data-in-the-silverlight-datagrid.aspx,我发现当您在项目上实现 ICollectionView 时,您可以实现自己的排序。

    所以你也许可以在你的结果上实现 ICollectionView(一个包装器)?

    如果您将它的 ItemSource 设置为 IList,Datagrid 会在内部执行此操作,所以也许您可以查看它的实现以了解它们是如何做到的? (参见Datagrids内部类ListCollectionView使用反射器)

    当你有一个 ICollectionView 时,你可以使用它的 SortDescriptions 来找出当前的排序。

    我希望这可以帮助您朝着正确的方向前进?

    吉普克

    【讨论】:

      【解决方案2】:

      您可以使用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;
      

      【讨论】:

        猜你喜欢
        • 2012-08-11
        • 2011-02-20
        • 1970-01-01
        • 2011-11-03
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-13
        相关资源
        最近更新 更多