我有一个带有“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();
答案 0 :(得分:2)
将您的行项目存储在ObservableCollection
个POCO
个对象中。
让您的POCO
对象类实现INotifyPropertyChanged
接口。
将RadGridView
ICollectionView
POCO
个ObservableCollection
对象绑定到ObservableCollection
,而不是Status
本身。
更改INotifyPropertyChanged
媒体资源Refresh()
后会处理更改通知,您只需拨打ICollectionView
RadGridView
方法即可并且您的{{1}}将仅显示过滤器指定的项目...
您可能需要在此过程中应用一些小调整,但这是实现预期结果的良好路线图...