4

複数の条件を持つデータソースのフィルターを作成したいと思います。私はこのスレッド(ここ)を見つけました。みんながほぼ同じ問題を抱えていますが、私は2つの操作の間にANDではなくORを作成したいと思います。

私がこれまでに持っているコードがあります:

        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)ですが、変数フィルターで「ロジック」を使用していない場合、フィルターは「AND」になります。

どうもありがとう

編集:私がやりたいことに近いjsFiddleがありますが、「AND」があります:この例では、フィルターは次のとおりです:[{[Freight = 11.61 OR Freight = 51.30]} AND {[City startwith "Charleroi"]} ]

しかし、私は次のような何かを持ちたいと思っています:[{[Freight = 11.61 OR Freight = 51.30]} OR {[City startwith "Charleroi"]}]

4

2 に答える 2

11

適切に動作する最終的なコードがあります:

キーワード 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 });
于 2013-01-08T14:13:21.947 に答える