Try this grid setup:
var grid = $("#grid").kendoGrid({
dataSource: {
data: [
{ name: "John", tags: ["C#", "JavaScript", "PHP"] },
{ name: "Oliver", tags: ["UI", "SQL"] },
{ name: "Mark", tags: ["SQL", "Windows Server"] }]
},
columns: [{
field: "name",
title: "Name"
}, {
template: "# var t=tags.join(', '); data.tagsString=t; # #=t #",
title: "Tags",
field: "tags"
}]
}).data("kendoGrid");
$("#filter").on("keydown", function() {
grid.dataSource.filter({
field: "tagsString",
operator: "contains",
value: $(this).val()
});
});
Demo.
As you can see, I have to use an external custom filter field. That is because the default built-in column filters of the grid can't filter an array, neither the dataSource's filter() method.
So, in the template, I made kendo to create a new property in each dataSource item, called tagsString, which I set the result of tags.join(", "), the same as displayed in the Tags column. With that property set, I can filter using filter() method, setting the field as tagsString.