2016-02-28 8 views
0

strust 2 JQuery сетки плагин не поддерживает summaryType для колонн, как работа вокруг я пытаюсь установить его как:Struts 2 JQuery сетки плагин установлен summaryType

$("#gridtable").jqGrid('setColProp', 'amount',{summaryType:'sum'}); 

Это не работает в первый раз. Но после перезагрузки сетки или сортировки некоторых столбцов отображается сводка.

Кажется, что значение summaryType должно быть определено до того, как построена сетка. Я пытаюсь позвонить setColProp в onBeforeTopics, но это не сработало.

Так что я могу установить свойство столбца до того, как построена сетка?!

+0

Какая версия jqGrid будет использоваться внутри? Вы можете просмотреть комментарий в начале строки 'jquery.jqgrid.min.js' (или' jquery.jqgrid.src.js' или 'grid.base.js') – Oleg

+0

Версия jgGrid - 4.6.0 –

ответ

1

Я полагаю, что плагин strust 2 jquery grid использует какой-то старый jqGrid в версии 4.6/4.7. Начиная с версии 4.4.4 jqGrid поддерживает onInitGrid callback и jqGridInitGrid событие, которое может быть очень полезно в вашем случае. Обратный вызов/событие будет вызван/вызван после того, как будут созданы внешние элементы jqGrid (например, заголовки столбцов), но до первое заполнение сетки данными (до первого вызова внутреннего метода populate).

Таким образом, вы можете использовать следующий код для необходимых изменений:

$("#gridtable").bind("jqGridInitGrid", function (e) { 
    $(this).jqGrid("setColProp", "amount", { summaryType: "sum" }); 
}); 

Это важно понимать, что вы можете/должны сделать связывание перед тем создания сетки, так как пустой <table id="gridtable"></table> уже существует и связывание во время создания jqGrid не будет изменяться.

Free jqGrid имеет другую функцию обратного вызова beforeInitGrid и соответствующее событие jqGridBeforeInitGrid, который будет вызываться раньше, до того, будут созданы какие-либо внешние части jqGrid, но jqGridInitGrid событие будет достаточно для вашей цели уже.

+0

Спасибо! Сохраненный мне день –

+0

@AlirezaFattahi: Добро пожаловать! – Oleg