簡體   English   中英

Kendo布爾值過濾器

[英]Kendo grid filter on boolean values

我有一個Kendo網格,其中添加了一個自定義過濾器字段。 我遇到的問題是我的過濾器無法在EEFinalize列上進行過濾。 它可以對任何具有實際單詞的列進行很好的過濾,但是如果它是布爾值true / false,則不會進行過濾。

這是我的搜索腳本

$(document).ready(function () {
        $("#FieldFilter").keyup(function () {

            var value = $("#FieldFilter").val();
            var grid = $("#grid").data("kendoGrid");

            if (value) {
                grid.dataSource.filter({
                    login: "or",
                    filters: [
                        { field: "ProfileName", operator: "contains", value: value },
                        { field: "EEFinalize", operator: "contains", value: value }
                    ]
                })
            } else {
                grid.dataSource.filter({});
            }
        });
    });

我還使用clientTemplate將true / false的值轉換為yes / no。

columns.Bound(obcs => obcs.EEFinalize).ClientTemplate("#= EEFinalize ? 'Yes'
 : 'No' #").Title(FieldTranslation.GetLabel("EEFinalize", GlobalVariables.LanguageID));

我假設運算符可能不正確,但是我嘗試執行的操作似乎都沒有過濾任何內容。 它在列上運行過濾器,但不返回任何值。 列中的所有值均為“ no”,因此應顯示所有內容。 在這種情況下,它會將其過濾為零。

如果選擇網格過濾器圖標,它將為我提供“是”和“不是”的選項

這里有些錯誤,而且沒有看到您的專欄或模型,我不確定。

  • 您的logic屬性拼寫錯誤。
  • 如果您的EEFinalize字段設置為布爾值,則該值不能為“ no”,它為truefalse
  • 布爾值字段上的過濾運算符應“等於”而不是“包含”

首先,我假設您在架構模型中將“ EFFinalize”字段聲明為“ boolean”,否則它將無法正常工作。 您的代碼應如下所示:

$(document).ready(function(){$(“#FieldFilter”)。keyup(function(){

        var value = $("#FieldFilter").val();
        var grid = $("#grid").data("kendoGrid");

        if (value) {
            grid.dataSource.filter({
                logic: "or",
                filters: [
                    { field: "ProfileName", operator: "contains", value: value },
                    { field: "EEFinalize", operator: "eq", value: value }
                ]
            })
        } 
       // don't do anything if 'value' does not exist
    });
});

我能夠成功實現布爾過濾的唯一方法是在數據源上使用parse函數,並在所需列上顯式設置true或false值。

parse: function(data) {
    if( undefined !== data.resources ) {
        for(var i=0; i < data.resources.length; i++ ) {
            if( data.resources[i]["IsChecked"] === "1" ) {
                data.resources[i]["IsChecked"] = true;
            } else {
                data.resources[i]["IsChecked"] = false;
            }
        }
    }
    return data;
},

暫無
暫無

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

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