如何在设置过滤器时更新RadGridView?

时间:2014-01-17 21:26:36

标签: wpf xaml filtering telerik-grid radgridview

我有一个带有“status”,“Name”列和名称为“Update”的RadButton的telerik RadGridView,当加载网格时,行将具有不同的状态,如“pending”“unread”和“clearing”。当用户选择状态为pending的行并单击按钮“update”时,状态将从pending更改为已清除。问题是当我们在状态列上设置过滤器时,“待定”只显示具有待处理状态的行,此时用户选择一行并单击更新状态更改为“已清除”,因为已设置过滤器,该行已清除状态也显示。当我们更新行时,它不会从网格中删除。

在网格上设置过滤器时,设置过滤器描述符,重新加载网格

            dgrid.FilterDescriptors.SuspendNotifications();
            foreach (IColumnFilterDescriptor fd in dgrid.Items.FilterDescriptors)
            {
                //IColumnFilterDescriptor columnFilter = fd;

                Telerik.Windows.Controls.GridViewColumn col = dgrid.Columns[fd.Column.UniqueName];
                IColumnFilterDescriptor columnFilter = col.ColumnFilterDescriptor;

                columnFilter.FieldFilter.Filter1.Value = fd.FieldFilter.Filter1.Value;
                columnFilter.FieldFilter.Filter1.Operator = fd.FieldFilter.Filter1.Operator;
            }
            dgrid.FilterDescriptors.ResumeNotifications();
           dgrid.Items.Refresh();

1 个答案:

答案 0 :(得分:2)

  1. 将您的行项目存储在ObservableCollectionPOCO个对象中。

  2. 让您的POCO对象类实现INotifyPropertyChanged接口。

  3. RadGridView ICollectionView POCOObservableCollection对象绑定到ObservableCollection,而不是Status本身。

  4. 更改INotifyPropertyChanged媒体资源Refresh()后会处理更改通知,您只需拨打ICollectionView RadGridView方法即可并且您的{{1}}将仅显示过滤器指定的项目...

  5. 您可能需要在此过程中应用一些小调整,但这是实现预期结果的良好路线图...