Kendo Grid Server Side Filtering Foreign Key using Dynamic Linq

Kasus: grid project, ada foreign key ke contractor. Ada masalah ketika mau memfilter grid berdasarkan nama contractor.

Kode di view

[code language=”javascript”]
columns: [
{
field: "Id",
type: "number",
},
{
field: "Name",
template: "#= CreateUrl(Id, Name) # ",
title: "Nama Proyek",
},
{
field: "ContractorName",
title: "Kontraktor",
},
{
field: "LastWeeklyReport",
sortable: false,
filterable: false,
title: "Laporan Mingguan Terakhir",
},
{
field: "Status",
template: "#= FormatText(StatusImage) #",
filterable: false,
},
],
[/code]

Solusi mengubah filters sebelum diproses oleh GridHelper

[code language=”csharp”]
if (filters != null && (filters.Filters != null && filters.Filters.Count > 0))
{
this.MapFilters(ref filters);
GridHelper.ProcessFilters<project>(filters, ref list);
}
[/code]

[code language=”csharp”]
/**
* map atribut ViewModel ke atribut DataModel
*/
private void MapFilters(ref FilterInfo filters)
{
if (filters.Field == "ContractorName")
filters.Field = "contractor.name";

if (filters.Filters != null)
{
int i = 0;
while (i < filters.Filters.Count())
{
var innerFilter = filters.Filters[i];
MapFilters(ref innerFilter);
filters.Filters[i] = innerFilter;
++i;
}
}
}
[/code]

Chandra Oemaryadi has written 244 articles

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>