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

Filter on foreign key object

2 Answers 66 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Dev
Top achievements
Rank 1
Dev asked on 04 Dec 2012, 11:25 PM
I have a grid where one of the columns is bound to a foreign key object. 

<telerik:RadGridView Margin="2,38,2,2" Name="notesListGridView" CanUserInsertRows="False" CanUserDeleteRows="False" IsReadOnly="True" AutoGenerateColumns="False" TabIndex="5" SelectionMode="Extended" >
     <telerik:RadGridView.Columns>
          <telerik:GridViewDataColumn UniqueName="Employee_Note_Date" Header="Date" Width="120"       DataMemberBinding="{Binding Employee_Note_Date, StringFormat=d}" CellStyle="{StaticResource CustomCellStyle}" />
          <telerik:GridViewDataColumn UniqueName="Employee_Note_Types" Header="Type" Width="200" DataMemberBinding="{Binding Employee_Note_Types, Path=Employee_Note_Types.Description}" CellStyle="{StaticResource CustomCellStyle}" />
          <telerik:GridViewDataColumn UniqueName="Notes" Header="Notes" Width="*" DataMemberBinding="{Binding Notes}" TextWrapping="Wrap" CellStyle="{StaticResource CustomCellStyle}"></telerik:GridViewDataColumn>
     </telerik:RadGridView.Columns>
</telerik:RadGridView>

When I use the built in grid filtering I am able to filter that column. However when I try to filter with code: 

string searchTxt = searchTextBox.Text;
notesListGridView.FilterDescriptors.Clear();
CompositeFilterDescriptor compositeDescriptor = new CompositeFilterDescriptor();
compositeDescriptor.LogicalOperator = FilterCompositionLogicalOperator.Or;
 
foreach (Telerik.Windows.Controls.GridViewColumn column in notesListGridView.Columns)
{
     if (column.IsVisible)
     {
          GridViewDataColumn col = (GridViewDataColumn)column;
          if (col.DataType.ToString() == "System.String")
          {
               compositeDescriptor.FilterDescriptors.Add(new FilterDescriptor(column.UniqueName, FilterOperator.Contains, searchTxt, false));
          }
     }
}
notesListGridView.FilterDescriptors.Add(compositeDescriptor);

When I add the CompositeFilter the notesListGridView.FilterDescriptors I get an InvalidCastException:
Invalid cast from 'System.String' to 'CoreDataServiceReference.Employee_Note_Type'.

How can I apply a filter to the foreign key object in the code?

2 Answers, 1 is accepted

Sort by
0
Dimitrina
Telerik team
answered on 07 Dec 2012, 02:20 PM
Hello,

Would you please try to define the "Employee_Note_Types" column as follows:

<telerik:GridViewDataColumn
UniqueName="Employee_Note_Types"
Header="Type"
Width="200"
DataMemberBinding="{Binding Employee_Note_Types.Description}" CellStyle="{StaticResource CustomCellStyle}" />

Does this solve the problem?

Kind regards,
Didie
the Telerik team

Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

0
Dev
Top achievements
Rank 1
answered on 07 Dec 2012, 07:43 PM
This did not solve the problem.
Tags
GridView
Asked by
Dev
Top achievements
Rank 1
Answers by
Dimitrina
Telerik team
Dev
Top achievements
Rank 1
Share this question
or