我有一个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”,因此它应显示所有内容。在这种情况下,它会将其过滤为空。
如果我选择网格过滤器图标,它会为我提供“是真”和“不是真”的选项
答案 0 :(得分:2)
这里有些不对劲而且看不到你的专栏或型号我无法确定。
logic
财产拼写错误。true
或false
。答案 1 :(得分:0)
首先,我假设你宣布你的“强制性”'字段为' 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
});
});
答案 2 :(得分:0)
我能够成功实现布尔过滤的唯一方法是在数据源上使用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;
},