Kendo:保存和还原网格状态时如何保留工具栏?

时间:2019-06-12 22:21:53

标签: kendo-ui kendo-asp.net-mvc

我保持标题的通用性,因为我不在乎我得到的答案是jquery,javascript还是MVC。

我有以下代码可以保存和加载网格:

$("#save").click(function() {
var grid = $("#grid").data("kendoGrid");

var dataSource = grid.dataSource;

var state = kendo.stringify(grid.getOptions());


$.ajax({
    method: "POST",
    url: "/ebol/savegrid",
    data: {
        data: state
    }
});
});

$("#load").click(function () {
var grid = $("#grid").data("kendoGrid");

var dataSource = grid.dataSource;

$.ajax({
    url: "/ebol/loadgrid",
    success: function (options) {
        if (options) {
            grid.setOptions(JSON.parse(options));
        }
    }
});
});

问题:我可以保存网格的状态(包括列顺序,过滤器等),但是当我使用加载按钮还原它时,网格的命令列消失了。
enter image description here

如何在还原过程中保留这些按钮?

1 个答案:

答案 0 :(得分:2)

我们的另一位开发人员正在另一页上解决这个确切的问题,为我解决了这个问题。在加载网格设置之前,需要先分离工具栏。在我看来,这似乎很棘手,但根据Kendo的说法,不支持保存和加载设置,因此这是我们的最佳选择。我修改后的代码:

    $("#load").click(function () {
    var grid = $("#grid").data("kendoGrid");
    $.ajax({
        url: "/ebol/loadgrid",
        success: function(state) {
            if (state) {
                state = JSON.parse(state);
                let toolBar = $("#grid .k-grid-toolbar").detach();
                grid.setOptions(state);
                $("#grid .k-grid-toolbar").replaceWith(toolBar);
            }
        }
    });
});