我正在使用telerik radgridview,其项目集合是绑定到datapager的domainsource 我有20页,当我在列上过滤它只是在当前页面上过滤,我如何使它过滤整个集合。下面是我的代码
<telerikRad:RadGridView>
ItemsSource="{Binding ElementName=stddata, Path=Data}"
<telerikRad:RadGridView.Columns>
<telerik:GridViewDataColumn Header="stuName" DataMemberBinding="{Binding Name}" />
<telerik:GridViewDataColumn Header="StuId" DataMemberBinding="{Binding StudentId}" />
<telerikRad:RadGridView.Columns>
<telerikRad:RadGridView>
<sdk:DataPager Grid.Row="2"
x:Name="SSSS"
Source="{Binding Data, ElementName=stddata}"
IsTotalItemCountFixed="True" />
<riaControls:DomainDataSource Name="stddata"
AutoLoad="True"
PageSize="9"
QueryName="GetStudentsQuery"
DomainContext="{Binding DomainContext}">
</riaControls:DomainDataSource>
答案 0 :(得分:1)
Telerik通过将RadGridView中的过滤器应用到控件绑定的集合,间接获取过滤后的项目。
这是一个解决方案,允许用户使用Telerik RadGridView控件中的当前过滤器和排序设置获取经过筛选的已排序数据项列表。
using Telerik.Windows.Data;
.
.
.
IEnumerable<MyClass> itemsToDisplay { get; set; } //The RadGridView is bound to this property
public void DoSomethingWithFilteredAndSortedDisplayItems(RadGridView rgv)
{
IQueryable<MyClass> iqItems = itemsToDisplay.AsQueryable();
FilterDescriptorCollection filter = rgv.FilterDescriptors;
SortDescriptorCollection sort = rgv.SortDescriptors;
List<MyClass> fsItems = iqItems.Where(filter).Sort(sort).ToIList() as List<MyClass>;
if (fsItems != null && fsItems.Count > 0)
{
DoSomethingWithDisplayItems(fsItems);
}
}
public void DoSomethingWithDisplayItems(IEnumerable<MyClass> list)
{
... //Do something
}
这是为了说明。在我自己的代码中,我实现了filter和sort作为RadGridView控件的扩展方法。