Фильтрация не работает для Telerik RadGridView Silverlight

Я использую telerik radgridview, чья коллекция элементов связана с источником данных, привязанным к пейджеру данных. У меня 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>

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.

Другие вопросы по тегам