Kendo下拉列表自定义过滤器

问题描述 投票:0回答:2

我想在多个列上过滤下拉列表数据。目前,它基于一列过滤数据。

是否有任何自定义方式来基于多列过滤数据?

代码:

$('<input data-bind="value:' + options.field + '"/>')
                        .appendTo(container)
                        .kendoDropDownList({
                         filter: "contains",

                        dataTextField:currentComboEditor.fieldName,
                        headerTemplate: dropdownTemplateHTML.getHeaderHTML(dropdownMetadata.columns),
                        valueTemplate: '<span>#:data.'+currentComboEditor.fieldName+'#</span>',
                        template: dropdownTemplateHTML.getRowTemplate(dropdownMetadata.columns),
                        dataValueField: currentComboEditor.fieldName,
                        dataSource: {
                            data: source
                        } 
                        });
filter kendo-ui telerik dropdown kendo-dropdown
2个回答
2
投票

[没有内置方法可以过滤多列上的kendoDropDownList。您可以执行此操作的唯一方法是创建自己的过滤器:

var filterValue = "search me";
var newFilter = {
    logic: "or",
    filters: [
        { field: "FieldA", operator: "contains", value: filterValue },
        { field: "FieldB", operator: "contains", value: filterValue },
        { field: "FieldC", operator: "contains", value: filterValue }
   ]
};
kendoDropDownList.dataSource.filter(newFilter);

根据您的需要,您必须将此代码挂接到正确的事件上。


0
投票

覆盖Kendo dropdownlist filtering event

kendoDropDownList.bind("filtering", function(e) {
    // ignore space
    var filterValue = e.sender._prev;
    if(filterValue.trim)filterValue = filterValue.trim();

    var newFilter = {
        logic: "or",
        filters: [
            { field: "FieldA", operator: "contains", value: filterValue },
            { field: "FieldB", operator: "contains", value: filterValue },
            { field: "FieldC", operator: "contains", value: filterValue }
       ]
    };
    this.dataSource.filter(newFilter);

    // important: stop default filter
    e.preventDefault();
});
© www.soinside.com 2019 - 2024. All rights reserved.