2013-03-19 65 views
0

我正在使用telerik radgridview其项目集合domainsource绑定到数据手册 我有20页,当我筛选它只是过滤当前页上的列,我如何使它过滤整个集合。下面是我的代码过滤不工作的Telerik RadGridView Silverlight

  <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> 

回答

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 
} 

这是为了说明。在我自己的代码中,我实现了过滤器并将其作为RadGridView控件的扩展方法进行排序。

相关问题