我有一个kendo网格,我已经适用了一个列过滤器,我需要使用我尝试过的文本框值过滤此结果,例如
var sText = $("#searchBox").val();
if (sText.length > 0) {
var filterChild = [];
var filtOut = [];
var ds = $('#homeGridCustomer').data('kendoGrid').dataSource;
var curr_filters = ds.filter();
filterChild.push({ field: "Name", operator: "contains", value: sText });
filterChild.push({ field: "City", operator: "contains", value: sText });
filterChild.push({ field: "CustomerNo", operator: "contains", value: sText });
var filtParent = { filters: filterChild, logic: "or" };
if (curr_filters != undefined) {
filtOut.push(curr_filters);
}
filtOut.push(filtParent);
ds.filter({ filters: filtOut, logic: "and" });
,但没有得到过滤的输出,什么也没有显示。谁能帮忙?预先感谢
如果您希望基于相同的输入值将多个搜索过滤器应用于dataSource
中的多个列,并维护已经应用的现有过滤器(并且能够在没有输入任何输入的情况下清除过滤器在搜索区域(,尝试使用:
var ds = $("#grid").data("kendoGrid").dataSource;
var sText = $("#nameOfYourInput").val();
var filterToApply = ds.filter();
if(!filterToApply) {
// if not, setup new filter
filterToApply = {
logic: "and", // use OR here if you want to search for a value in either column instead of all columns
filters: []
}
}
var applyFilters = false;
// check to see if `sText` contains value before filtering (as filter will apply like `Name`/`City`/`CustomerNo` `contains` `null`/`undefined` otherwise)
if(sText) {
applyFilters = true;
filterToApply.filters.push({field: "foo", operator: "contains", value: sText});
filterToApply.filters.push({field: "bar", operator: "contains", value: sText});
}
if(applyFilters) {
ds.filter([filterToApply]);
}
else {
ds.filter([]);
}
我附上了一个JSBIN示例,供您播放,默认情况下,基于新的输入值覆盖现有网格过滤器,并包括评论的代码,可用于在现有过滤器顶部构建。希望您可以从中得到所需的东西。