如果过滤器应用于任何列,则无法将新对象添加到KendoUI网格

时间:2013-07-24 16:54:42

标签: kendo-grid

我使用KendoUI网格和弹出编辑模式。将过滤器应用于任何列后,无法正确添加新对象。多次按“添加”按钮不会显示编辑弹出窗口。但清除过滤器后,空格对象会显示在网格中。 有没有解决方法?

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。而不是标准的添加按钮使用工具栏模板,其中添加链接“添加”与自定义处理程序触发网格添加。在该处理程序中检查是否在网格上使用过滤,如果是,则将当前过滤存储到var并删除过滤。还绑定到网格“保存”和“取消”事件处理程序,这些处理程序将在添加新对象(或取消)后应用先前的过滤。

    <kendo:grid-toolbarTemplate>
        <div>
            <a class="k-button k-button-icontext" onclick="addItemHandler()">Add</a>
    ...

    var gridFilter;

    function addItemHandler() {
        var table = $("#myGrid").data("kendoGrid");

        gridFilter = table.dataSource.filter();

        if (gridFilter) {
            table.dataSource.filter(null);
        }

        table.addRow();
    }

    function gridSavedHandler(e) {       
        restoreFilter(e.sender);
    }

    function gridEditCanceledHandler(e) {
        e.preventDefault();
        e.sender.cancelChanges();
        restoreFilter(e.sender);
    }

    function restoreFilter(table) {
        if (gridFilter) {
            table.dataSource.filter(gridFilter);
            gridFilter = null;
        }
    }

   $(document).ready(pageInitHandler);

   function pageInitHandler() {
       var table = $("#myGrid").data("kendoGrid");
       table.bind("save", gridSavedHandler);
       table.bind("cancel", gridEditCanceledHandler);
   }

解决方法很复杂,但确实有效。