2013-03-19 103 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控件的擴展方法進行排序。

相關問題