我尝试从Kendo网格过滤器的下拉列表中删除项目。但它仍然呈现。我怎么能达到这样的行为?
$("#grid").kendoGrid({
columns: [
{ field: "someDate", type: "date" }
],
dataSource: [
{ someDate: "2016-3-29"},
{ someDate: "2016-3-30"}
],
filterable: {
extra: true,
operators: {
date: {
gte: "Is after or equal to",
lte: "Is before or equal to"
}
}
},
filterMenuInit: function(e) {
e.container.find("select:eq(0)>option")[1].remove();
e.container.find("select:eq(1)>option")[1].remove();
e.container.find("select:eq(2)>option")[0].remove();
}
});
dojo上的链接。 请帮忙。
EDITED : 我需要两个复杂的过滤日期。在第一个过滤器中,我只需要"等于"然后" AND",而在第二个过滤器中我只需要"在#34之前或等于" 。我尝试通过删除"是等于或等于"从第一次下拉和"是等于或等于"从第二个。
答案 0 :(得分:2)
而不是删除你只能添加你想要的东西
filterable: {
extra: false,
operators: {
string: {
startswith: "Starts with",
eq: "Is equal to",
neq: "Is not equal to"
}
}
},
答案 1 :(得分:1)
您需要获取kendoDropDownList对象,然后从dataSource中删除该项;我已更新了您的dojo
<script>
$("#grid").kendoGrid({
columns: [
{ field: "name" }
],
dataSource: [
{ name: "Jane Doe"},
{ name: "John Doe"}
],
filterable: true,
filterMenuInit: function(e) {
if (e.field == "name") {
var filter1 = e.container.find("select:eq(0)").data("kendoDropDownList");
var filter2 = e.container.find("select:eq(2)").data("kendoDropDownList");
filter1.dataSource.remove(filter1.dataSource.at(0));
filter1.select(0);
filter2.dataSource.remove(filter2.dataSource.at(0));
filter2.select(0);
}
}
});
</script>
答案 2 :(得分:-1)
请参见下面的示例,在字段部分使用filterable:false从列中删除过滤器。
<div id="grid"></div>
<script>
$("#grid").kendoGrid({
columns: [
{ field: "name", filterable: false },
{ field: "age" }
],
filterable: true,
dataSource: [ { name: "Jane", age: 30 }, { name: "John", age: 33 }]
});
</script>