从Kendo Grid过滤器中删除选项

时间:2016-03-29 13:41:25

标签: javascript kendo-ui telerik kendo-grid

我尝试从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之前或等于" 。我尝试通过删除"是等于或等于"从第一次下拉和"是等于或等于"从第二个。

3 个答案:

答案 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>