2

我的应用程序中有两个网格。

var columns1 = [
    {
        name: "Address",
        field: "address"
        id: "address",
        sortable: true
    }
]

var columns2 = [
    {
    {
        name: "Rating, in %",
        field: "rating"
        id: "rating_percent",
        resizable: false
    }
]

它们彼此绝对独立。另外,我在另一个js文件中有一些网格事件描述。

    grid.onColumnsReordered.subscribe(function (e, args) {
        _this.updateHeaderRow();
            // here
    });

当用户更改列顺序时,我想保存此顺序。我应该更改(覆盖)DOM 元素,我的意思是column1column2?所以问题:如何保存列顺序?

4

2 回答 2

4

njr101 的答案(使用 store.js)很棒,但请注意:store.js 不能存储函数(即用于编辑器、格式化程序),所以一旦你 store.get() 列,你需要重新添加函数,使用您的原始库存“列”数组:

if (store.get('gridColumns')) {
    grid.setColumns(store.get('gridColumns'));      // Restore settings if available

    grid.getColumns().forEach(function(ch) {    // Re-create editor and formatter functions
        var result = $.grep(columns, function(e){ return e.id == ch.id; });
        if (result[0]) {
            ch.editor = result[0].editor;
            ch.formatter = result[0].formatter;
        }
    });
}
于 2014-11-06T20:27:05.327 回答
2

我以前做过这个,我发现最简单的方法是将列存储在本地存储中。我使用了store.js库,这使得这变得非常简单。

grid.onColumnsReordered.subscribe(function (e, args) {        
    store.set('gridColumns', grid.getColumns());
});

当您想恢复列时(例如,当用户返回页面时)您可以调用:

grid.setColumns(store.get('gridColumns'));
于 2012-06-28T09:44:36.367 回答