2

アプリケーションに 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 要素を変更 (上書き) する必要がcolumn1ありcolumn2ますか? 質問:列の順序を保存するにはどうすればよいですか?

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 に答える