2012-06-28 1 views
2

У меня есть две решетки в моем приложении.Как сохранить порядок столбцов SlickGrid (js)?

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? Итак, вопрос: как я могу сохранить порядок столбцов?

ответ

2

Я сделал это раньше, и самым простым способом я нашел хранение столбцов в локальном хранилище. Я использую библиотеку store.js, которая делает это довольно простым.

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

Если вы хотите восстановить столбцы (например, когда пользователь возвращается на страницу), вы можете просто позвонить: ответ

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

njr101 (используя store.js) является большим, но примечание: store.js не может хранить функции (т. е. для редакторов, форматировщиков), поэтому после того, как вы запомните столбцы, вы должны добавить функции обратно, используя исходный массив «столбцов»:

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