I am having trouble filtering a kendo data source on related data (many to many). I am using ASP.NET WebAPI2 and DataSourceRequest to catch the request on the server. The data is then fetched using the .ToDataSourceResult() extension method on an IQueryable.
I am aware of this article http://blogs.telerik.com/kendoui/posts/12-11-29/the_facts_on_using_kendo_ui_with_asp_net_webapi
My Data is structured as follows:-
Customer -> CustomerAddress -> Address
Where CustomerAddress is the join table between the Customer & Address tables. There is a navigational property on the Customer and also on the CustomerAddress.
Kendo datasource is as follows:-
var customers = new kendo.data.DataSource({
transport: {
read: {
url: "api/customers", type: "GET"
}
},
pageSize: 10,
page: 1,
serverPaging: true,
serverFiltering: true,
type: "webapi",
schema: {
data: "Data",
total: "Total",
errors: "Errors",
model: {
id: "CustomerID"
}
}
});
The filter need to be applied on a field in the Address table. ie. AddressLine1 = "{search param}"
I have tried the following:-
var filters = {
logic: "or",
filters: [
{field: "FirstName",operator: "contains",value: "xyz"},
{field: "LastName",operator: "contains",value: "xyz"},
{field: "CustomerAddress.Address.AddressLine1",operator: "contains",value: "xyz"},
]
};
customers.filter(filters);
Out of these the first 2 filters work absolutely fine. I have done a .Include() on the queryable and the address information is loaded fine.
How do I do this using the kendo DataSourceRequest ?