datasource - 多条件剑道数据源过滤

标签 datasource kendo-ui

我想为具有多个条件的数据源构建过滤器。我找到了这个线程( HERE ),那里的人有几乎相同的问题,但我想在我的两个操作之间进行 OR 而不是 AND 。

有我到目前为止的代码:

        var filter = { logic: "OR", filters: [] };

        var filterProduct = { logic: "AND", filters: [] };
        var supplierValue = dropdownSupplier.value();
        if (supplierValue != "00000000-0000-0000-0000-000000000000") {
            filterProduct.filters.push({ field: "SupplierId", operator: "eq", value: supplierValue });
        }

        var categoryValue = dropdownCategory.value();
        if (categoryValue != "00000000-0000-0000-0000-000000000000") {
            filterProduct.filters.push({ field: "CategoryId", operator: "eq", value: categoryValue });
        }

        var typeValue = dropdownType.value();
        if (typeValue != "00000000-0000-0000-0000-000000000000") {
            filterProduct.filters.push({ field: "TypeId", operator: "eq", value: typeValue });
        }


        var filterSelect = { logic: "OR", filters: [] };
        filterSelect.filters.push({ field: "Id", operator: "eq", value: "00000000-0000-0000-0000-000000000000" });

        filter.filters.push(filterProduct);
        filter.filters.push(filterSelect);

        dropdownProduct.dataSource.query({ filter: filter });

事实上,我想要做的是: (filterProduct) OR (filterSelect) 但如果我不在变量过滤器中使用“逻辑”,过滤器将是“与”。

非常感谢

编辑:有一个 jsFiddle 接近我想要做的,但使用“AND”:Example在这个例子中,过滤器是:
[ {[ Freight = 11.61 OR Freight = 51.30 ]} AND {[ City startswith "Charleroi"]} ]

但我想有类似的东西:
[ {[ 运费 = 11.61 或运费 = 51.30 ]} {[ 城市以“沙勒罗瓦”开头 ]} ]

最佳答案

最终代码正常工作:

关键字 AND 和 OR 需要小写,我不需要使用变量 filterSelect

    var filter = { logic: "or", filters: [] };
    var filterProduct = { logic: "and", filters: [] };
    var supplierValue = dropdownSupplier.value();
    if (supplierValue != "00000000-0000-0000-0000-000000000000") {
        filterProduct.filters.push({ field: "SupplierId", operator: "eq", value: supplierValue });
    }
    var categoryValue = dropdownCategory.value();
    if (categoryValue != "00000000-0000-0000-0000-000000000000") {
        filterProduct.filters.push({ field: "CategoryId", operator: "eq", value: categoryValue });
    }
    var typeValue = dropdownType.value();
    if (typeValue != "00000000-0000-0000-0000-000000000000") {
        filterProduct.filters.push({ field: "TypeId", operator: "eq", value: typeValue });
    }
    if (filterProduct.filters.length > 0) {
        filter.filters.push(filterProduct);
    }
    filter.filters.push({ field: "Id", operator: "eq", value: "00000000-0000-0000-0000-000000000000" });
    dropdownProduct.dataSource.query({ filter: filter });

关于datasource - 多条件剑道数据源过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203509/

相关文章:

javascript - KendoUI Tabstrib 在所有选项卡上选择第一个选项卡

javascript - Kendo UI 日期选择器按周捕获

javascript - Kendo ui 网格创建聚合函数

javascript - 元素中的 Kendo 模板 onClick 不起作用

events - 剑道 UI 数据源更改事件 : is it working?

java - 如何在多个子报表上使用相同的 JRBeanCollectionDataSource?

java - 如何创建一个包含多个数据源的 Spring Boot 项目?

java - 创建名称为 'batchDataSource' : Requested bean is currently in creation: Is there an unresolvable circular reference? 的 bean 时出错

grails - 您如何为 Grails 集成测试创建示例数据源?

c# - 数据源上的 Kendo TreeView 同步方法不起作用