我一直在使用过滤器在我的KendoUI网格上成功搜索。但是,一个新应用程序有一些多值字段,我的过滤不起作用 - 它实际上似乎永远旋转。
多值字段的示例:
field : "rspPersons",
title : "Responsible Persons",
type : "Text",
template: "# var t=rspPersons.join(', ');data.tagsString=t; # #=t #"
我的过滤器示例:
orfilter.filters.push( {
field : "chgDescription",
operator : "contains",
value : v1
},
orfilter.filters.push( {
field : "rspPersons",
operator : "contains",
value : v1
}
第二个过滤器将使整个搜索崩溃。如果我把它拿出来,那么搜索/过滤器就可以了。
那么如何筛选/搜索多值字段呢?
您需要将多个筛选条件推送到筛选器数组中,并将其分配给 网格的数据源。这是我的做法。
function onChange() {
var filter = { logic: "or", filters: [] };
// values is an array containing values to be searched
var values = this.value();
$.each(values, function (i, v) {
filter.filters.push({ field: "column_name", operator: "eq", value: v
});
});
var dataSource = $("#searchgrid").data("kendoGrid").dataSource;
dataSource.filter(filter);
}
应设置类似于以下内容的逻辑选项。
filter({
logic: "or",
filters: [{
field: "LastName",
operator: "contains",
value: value
},
{
field: "FirstName",
operator: "contains",
value: value
}]
})
我创建了一个单独的搜索文本框,然后像这样完成脚本,它对我有用。
$("#search").keyup(function () {
var selecteditem = $('#search').val();
var kgrid = $("#gridName").data("kendoGrid");
selecteditem = selecteditem.toUpperCase();
var selectedArray = selecteditem.split(" ");
if (selecteditem) {
var orfilter = { logic: "or", filters: [] };
var andfilter = { logic: "and", filters: [] };
$.each(selectedArray, function (i, v) {
if (v.trim() == "") {
}
else {
$.each(selectedArray, function (i, v1) {
if (v1.trim() == "") {
}
else {
orfilter.filters.push({ field: "GridColumnFields", operator: "contains", value: v1 },
{ field: "LastName", operator: "contains", value: v1 },
{ field: "FirstName", operator: "contains", value: v1 },
{ field: "GridColumnFields", operator: "contains", value: v1 },
{ field: "GridColumnFields", operator: "contains", value: v1 }
);
andfilter.filters.push(orfilter);
orfilter = { logic: "or", filters: [] };
}
});
}
});
kgrid.dataSource.filter(andfilter);
}
else {
kgrid.dataSource.filter({});
}
});
您可以在搜索筛选器中定义所需的添加列
您可以在 HTML 中创建文本框
<input type="text" id="search" name="search" />