2013-12-04 6 views
2

Столбы сетки могут быть изменены. Я хочу сохранить ширину столбцов с пользовательскими настройками и восстановить их при следующем запуске сеанса.Kendo сетка изменяемая ширина столбца

Лучший способ хранения ширины столбцов я нашел следующее:

var element = $('#grid').kendoGrid({ 
    ... 
    resizable: true, 
    columnResize: function(e) { 
     var state = {}; 
     this.columns.every(function(c,i) { 
      state[c.field] = c.width; 
      return true; 
     }); 
     var state_txt = JSON.stringify(state); 
     localStorage['profile_userprofile_grid_column_width'] = state_txt; 
    } 
} 

Теперь я хочу, чтобы восстановить ширину столбца сохраненное в предыдущем сеансе пользователя. Я могу читать ширину столбцов из хранилища:

var state = JSON.parse(localStorage['profile_userprofile_grid_column_width']); 

Знает ли кто какой-то элегантный способ применить эти значения обратно в сеть, если она уже создана в это время? Ручка изменения размера делает это внутри, так что это возможно, но код, делающий это в источнике сетки, является уродливым.

+0

ли вы найти решение на свой вопрос? –

ответ

0

Вы можете вызвать columnResize событие после initilisation, как показано ниже

function grid_columnResize(e) { 
    // Put your code in here 
    console.log(e.column.field, e.newWidth, e.oldWidth); 
} 
$("#grid").kendoGrid({ 
    columns: [ 
    { field: "name" }, 
    { field: "age" } 
    ], 
    dataSource: [ 
    { name: "Jane Doe", age: 30 }, 
    { name: "John Doe", age: 33 } 
    ], 
    resizable: true 
}); 
var grid = $("#grid").data("kendoGrid"); 
grid.bind("columnResize", grid_columnResize); 

Documentation

+0

Ваш код не вызывает событие columnResize, но вместо этого связывает обработчик событий columnResize. В любом случае, запуск события не помогает, возможно, потому, что само событие генерируется дескриптором изменения ** после **, это действительно изменило размер столбца. ниже код вызывает событие, но это не помогает: г = $ ('# сетка') гг = g.getKendoGrid() gg.trigger ('columnResize', {столбцов: gg.columns [1], oldWidth: gg.columns [1] .width, newWidth: 400, sender: gg}) (не знаю, почему код не форматируется, как описано в справке) – nnseva

+0

Моя ошибка сказал 'bind' вместо' trigger'. Что вы подразумеваете под словом «это не помогает»? Код вообще ничего не делает? – dcodesmith

+0

Я имею в виду, что мой код, запускающий событие columnResize вручную, не приводит к изменению размера столбца на экране, хотя приводит к вызову обработчиков событий для события columnResize. Я хочу сделать восстановление ширины столбцов, т. Е. Сохранить его в локальном хранилище в событии columnResize (код из исходного сообщения делает это), а когда начинается следующий сеанс, прочитайте его с локального хранилища и передайте его сетка, поэтому сетка будет иметь ту же ширину столбцов, что и в предыдущем сеансе. – nnseva

Смежные вопросы