This is a migrated thread and some comments may be shown as answers.

filter on radgridview filters only already filtered data

0 Answers 35 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Gani
Top achievements
Rank 1
Gani asked on 21 Mar 2013, 12:06 AM
I wrote the server side filtering with the RIA service, the problem with this is when we apply filter for  the first time it get results from all the pages for the second time it filters only on the already filtered data. I think i have to implement composite filters or column descriptors can anyone help me on this 
here is my xaml

  <telerikRad:RadGridView
                                            Grid.Row="1"          
AutoGenerateColumns="False"
IsReadOnly="True"
HorizontalAlignment="Stretch" 
RowIndicatorVisibility="Collapsed" 
                                          Filtering="RadGridView1_Filtering"
Name="RadGridView1"                              
ItemsSource="{Binding ElementName=ddsData, Path=Data}" 
SelectionMode="Extended"
ShowGroupPanel="False" EnableColumnVirtualization="True" EnableRowVirtualization="True" CanUserSelect="True">
                                            <telerikRad:RadGridView.Columns>
                                                <telerik:GridViewDataColumn Header="Student ID "DataMemberBinding="{Binding Id}"/>
                                                <telerik:GridViewDataColumn Header="Student Name" DataMemberBinding="{Binding Name}" />
                                                <telerik:GridViewDataColumn Header="Class" DataMemberBinding="{Binding Class}" />
                                            </telerikRad:RadGridView.Columns>
                                        </telerikRad:RadGridView>
                                        <sdk:DataPager
                                            Grid.Row="2"
   Source="{Binding Data, ElementName=ddsData}" 
   IsTotalItemCountFixed="True" />

<riaControls:DomainDataSource Name="ddsData" 
 AutoLoad="True" 
 LoadSize="9"
  PageSize="9"
 QueryName="GetFilteredStudentsQuery" 
 DomainContext="{Binding Context}">
</riaControls:DomainDataSource>

here is my code behind

        private void AddDomainDataSourceFilterDescriptor(Telerik.Windows.Data.FilterDescriptor descriptor)
        {
            try
            {
               System.Windows.Controls.FilterDescriptor fd = new System.Windows.Controls.FilterDescriptor();
                    fd.PropertyPath = descriptor.Member;
                fd.Value = new System.Windows.Controls.Parameter();
                fd.Value = descriptor.Value;
                fd.Operator = CreateRiaFilterOperator(descriptor.Operator);
               ddsData.FilterDescriptors.Add(fd);
            }
            catch { }
        }

        private void RemoveDomainDataSourceFilterDescriptor(Telerik.Windows.Data.FilterDescriptor descriptor)
        {
            try
            {
                System.Windows.Controls.FilterDescriptor fd =
                    (from d in ddsDevices.FilterDescriptors
                     where d.PropertyPath == descriptor.Member &&
                           d.Operator == CreateRiaFilterOperator(descriptor.Operator) &&
                           d.Value == descriptor.Value
                     select d).FirstOrDefault();
                if (fd != null)
                {
                    ddsData.FilterDescriptors.Remove(fd);
                }
            }
            catch { }
        }

        private void RadGridView1_Filtering(object sender, Telerik.Windows.Controls.GridView.GridViewFilteringEventArgs e)
        {
            try 
            {
                using (ddsData.DeferLoad())
                {
                    foreach (Telerik.Windows.Data.FilterDescriptor d in e.Removed)
                    {
                        RemoveDomainDataSourceFilterDescriptor(d);
                    }

                    foreach (Telerik.Windows.Data.FilterDescriptor d in e.Added)
                    {
                        AddDomainDataSourceFilterDescriptor(d);
                    }
                }
            }
            catch { }
        }

        private static System.Windows.Controls.FilterOperator CreateRiaFilterOperator(Telerik.Windows.Data.FilterOperator filterOperator)
        {
            return (System.Windows.Controls.FilterOperator)System.Enum.Parse(typeof(System.Windows.Controls.FilterOperator), filterOperator.ToString(), true);
        }
I searched online about implementing Composite or column descriptors but none is helpful for me, can someone help me on this
this  is very urgent





No answers yet. Maybe you can help?

Tags
GridView
Asked by
Gani
Top achievements
Rank 1
Share this question
or