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