【问题标题】:Silverlight 4 datagrid not re-sortingSilverlight 4 数据网格未重新排序
【发布时间】:2010-12-30 20:06:41
【问题描述】:

我是 Silverlight 和 RIA 的新手。我有一个简单的表单,其中 DataGrid 绑定到 DomainDataSource 对象。显示的行表示要在网页上显示的部分标题。其中一列称为 OrdinalPosition,我已指定网格将按此列排序。我有一个带有向上和向下箭头按钮的自定义列。期望的行为是,当用户单击向上/向下按钮时,OrdinalPosition 会递增/递减,以便他们可以指定各部分的显示顺序。

如果我手动更改 OrdinalPosition 列中的值,只要我移出该行,网格就会自行重新排序。但是,如果我使用代码隐藏来更改值,则网格不会自行重新排序(即使网格确实显示了新值。)这是我单击按钮的代码隐藏...

    private void incrementOrdinal(object sender, System.Windows.RoutedEventArgs e)
    {
        Button btn = (Button)sender;
        Section s = (Section)sectionDataGrid.SelectedItem;
        s.Ordinal++;
        sectionDataGrid.CommitEdit();
    }

我应该做些什么来提示网格重新排序其记录吗?

【问题讨论】:

    标签: silverlight sorting datagrid ria


    【解决方案1】:

    当记录更改时,DomainDataSource 不会自动重新排序数据,除非使用 IEditableCollectionView 接口通过 DomainDataSource 通过其 Data 或 DataView 公开的数据应用更改。

    尝试以下方法:

    IEditableCollectionView view = (IEditableCollectionView)selectionDataGrid.ItemsSource;
    Section s = view.CurrentItem;
    view.EditItem(s);
    s.Ordinal++;
    view.CommitEdit();
    

    这是 DataGrid 在通过 UI 进行编辑时执行的操作。 ItemsSource 绑定到 DomainDataSource.Data 属性,该属性是 DomainDataSourceView 类的一个实例,表示已加载的 IEnumerable 数据。 DomainDataSourceView 实现了 IEditableCollectionView,当在使用 EditItem 后对该视图调用 CommitEdit 时,它将重新排序当前页面上的数据。

    请注意,当发生更改时,在本地重新排序将不允许项目移入或移出当前页面。

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 2012-08-11
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多