簡體   English   中英

如何通過 kendo 數據源以編程方式應用復雜的 odata 過濾器?

[英]How to apply complex odata filters programatically with kendo data sources?

我有一個劍道數據源(附加到網格以防萬一),它是一個 OData v4 端點源。 我需要對它應用類似這個過濾器的東西......

LINQ查詢:

ds.data().Where(i => i.References.Any(r => r.OfferLines.Any(l => l.OfferId == "myOfferId"))

OData查詢:

?$filter=References/any(r:r/OfferLines/any(l:l/OfferId eq 'myOfferId'))

我如何使用 Teleriks 記錄的 function dataSource.filter “在我的網格初始化后”以編程方式執行此操作?

您可以使用parameterMap事件來注入自定義過濾器。 這是我的代碼示例,用於按多個或條件過濾文章。

dataSource: {
    type: "odata-v4",
    serverFiltering: true,
    transport: {
        read: "/oData/Article",
        parameterMap: function (data) {
            //Get value used to filter
            var value = data.filter.filters[0].value;
            //Generate parameters in odata v4 format
            var d = kendo.data.transports['odata-v4'].parameterMap(data);
            //Add filter by matching any reference containing value
            d.$filter = "References/any(ref: contains(tolower(ref/Reference),'" + value + "')))";
            return d;
        }
    },
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM