如何相对于列过滤器和搜索框文本值归档



我有一个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示例,供您播放,默认情况下,基于新的输入值覆盖现有网格过滤器,并包括评论的代码,可用于在现有过滤器顶部构建。希望您可以从中得到所需的东西。

最新更新