1

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

4

1 回答 1

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);
   }

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

于 2013-07-25T09:54:03.963 回答