[英]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
屬性拼寫錯誤。 true
或false
。 首先,我假設您在架構模型中將“ 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.