【问题标题】:Kendo Grid filter using checkboxes and mutliple selections使用复选框和多项选择的 Kendo Grid 过滤器
【发布时间】:2018-02-12 18:29:15
【问题描述】:

我正在使用自定义多选代码来过滤列。目前我可以让它根据一个选择进行过滤,但无法根据多个值进行过滤。如果选中了任何选定的复选框,我需要读取逻辑,然后在网格中显示选择。我现在写它的方式是过滤每一个,但如果其中一个选择为假,即使其他选择之一为真,它也会从网格中删除它。

var filter = dataSource.filter() || { logic: "or", filters: [] };
            var fieldFilters = $.map(element.find(":checkbox:checked"), function (input) {
                return {
                    field: field,
                    operator: "eq",
                    value: input.value
                };
            });
            if (fieldFilters.length) {
                removeFiltersForField(filter, field);
                filter.filters.push({
                    logic: "or",
                    filters: fieldFilters
                });
                var filterType = filter.filters[0].filters;
                if (filter.filters[0].filters.length > 1) {
                    var filterLogic = { logic: "or", filters: filter.filters };
                    dataSource.filter(filterLogic.filters[0]);
                } else {
                    dataSource.filter(filterType); // This works, but its only one selection
                }

            }

如果任何选择为真,我需要它返回并忽略那些为假的。目前,它是按顺序排列的,所以如果第一个选择为真,则将其显示在网格中,但如果下一个选择为假,则将其从网格中删除。

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:

    好的,我能够做到这一点。如果有人有更有效的方法,请在此处添加。目前,这可行:

    var multipleFilters = [];
                    if (filterType.length > 1) {
                        $(filterType).each(function (i, value) {
                            var simpleFilter = { field: value.field, operator: value.operator, value: value.value };
                            multipleFilters.push(simpleFilter);
                        })
                        if (multipleFilters == 2) {
                            dataSource.filter(multipleFilters[0] || multipleFilters[1]);
                        } else if (multipleFilters == 3) {
                            dataSource.filter(multipleFilters[0] || multipleFilters[1] || multipleFilters[2]);
                        } else {
                            dataSource.filter(multipleFilters[1] || multipleFilters[2] || multipleFilters[3]);
                        }
                    } else {
                        dataSource.filter(filterType);
                    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多