如何保存 SlickGrid 列顺序 (js)

how to save a SlickGrid column order (js)?

本文关键字:js 顺序 SlickGrid 保存 何保存      更新时间:2023-09-26

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

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?那么问题:如何保存列顺序?

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

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

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

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

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

grid.setColumns(store.get('gridColumns'));