MVC Kendo Grid Custom Filter
14,073
Solution 1
Yes we need to define specified filter functions in javascript like below.
.Columns(columns => {
columns.Template(@<text>@item.FirstName @item.LastName</text>)
.ClientTemplate("#=FirstName# #=LastName#")
.Title("Name");
columns.Bound(e => e.City)
.Filterable(filterable => filterable.UI("cityFilter"))
.Width(200);
columns.Bound(e => e.Title)
.Filterable(filterable => filterable.UI("titleFilter"))
.Width(350);
})
.Filterable(filterable => filterable
.Extra(false)
.Operators(operators => operators
.ForString(str => str.Clear()
.StartsWith("Starts with")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
))
)
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("FilterMenuCustomization_Read", "Grid"))
)
)
<script type="text/javascript">
function cityFilter(element) {
element.kendoDropDownList({
dataSource: {
transport: {
read: "@Url.Action("FilterMenuCustomization_Cities")"
}
},
optionLabel: "--Select Value--"
});
}
function titleFilter(element) {
element.kendoAutoComplete({
dataSource: {
transport: {
read: "@Url.Action("FilterMenuCustomization_Titles")"
}
}
});
}
</script>
see this
http://demos.telerik.com/aspnet-mvc/grid/filter-menu-customization
Solution 2
Malkan's answer should work. All you need to do is have a separate filter on each column. just replace the column "filterable" with whatever you like like this:
.Filterable(filterable => filterable
.Extra(false)
.Operators(operators => operators
.ForString(str => str.Clear()
.StartsWith("Starts with")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
))
)
Author by
littleGreenDude
Updated on July 01, 2022Comments
-
littleGreenDude almost 2 years
Basically, I am looking for the MVC version of this demo:
http://demos.telerik.com/kendo-ui/grid/filter-menu-customization
Here is what I currently have:
.Columns(columns => { columns.Bound(e => e.ID) .Hidden(); columns.Bound(e => e.SearchFunctionCode) .Hidden(); columns.Bound(e => e.SearchFunctionDesc) .Title("Search Function") .Filterable( *** WHAT GOES HERE? *** ) .HtmlAttributes(new { style = "text-align: center" }) .HeaderHtmlAttributes(new { style = "text-align: center" });
Do I still reference the javascript, or is there another approach?
<script type="text/javascript"> function SearchFunctionFilter(element) { element.kendoDropDownList({ dataSource: searchfunctions(), optionLabel: "--Select Value--" }); } </script>