Кэширование подсетки или остановка удаления данных подсетки (jqGrid)

Есть ли способ заставить jqGrid не удалять данные подсетки при переключении строки? Мой текущий процесс загрузки сетки данных выглядит следующим образом:

1) Настройте основную сетку, программно настроив подсетку с идентификатором, который я могу использовать позже.

2) Загружать данные в основную сетку локально через json

3) Добавить данные в подсетку локально через json

Из-за того, что я загружаю подсетку локально, а не по URL-адресу, когда пользователь переключается (скрывает, а затем повторно отображает), в сетке нет никаких данных, и я хочу, чтобы она отображала исходные данные, которые были предоставлены подсетке .

Я знаю, что это может показаться странным способом загрузки данных, но на то есть причина.

Что я сейчас делаю с jqGrid, так это отображаю тонны страховой информации на одной веб-странице (по сути, это отчет). Эта веб-страница должна автоматически загружать все данные, и у меня есть много случаев, когда мне нужно обеспечить функциональность подсетки. Я понял, как я могу сделать это, вручную заставив событие click произойти, чтобы подсетка отображалась, но опять же, если пользователь щелкает подсетку, она исчезает и не возвращается.

Если у вас есть какие-либо предложения по этому поводу, пожалуйста, дайте мне знать.

Кроме того, если вы считаете, что есть лучшие способы автоматического отображения всех данных, сообщите мне об этом. До сих пор я находил, что с jqGrid легко работать, но я заставлял его делать то, чего он изначально не делал, например, добавлять итоговые значения в строку нижнего колонтитула.

Спасибо заранее за вашу помощь.


person jwmajors81    schedule 27.07.2010    source источник


Ответы (1)


Что вы хотите сделать, так это запретить jqGrid перезагружать данные подсетки при расширении строки. Ручка управления для этого находится в свойстве subGridOptions jqGrid. Объект subGridOptions имеет логическое свойство reloadOnExpand, которое управляет именно этим поведением.

Когда вы инициализируете свой объект jqGrid, просто убедитесь, что для этого свойства установлено значение false, как показано ниже:

jQuery("#gridId").jqGrid({
    // ... other properties ...
    subGrid: true,
    subGridOptions: {
        reloadOnExpand: false // Prevent jqGrid from wiping out the subgrid data.
    },
    subGridRowExpanded: subGridExpandCallback,
    // ... other properties ...

Единственное место, где я смог найти этот код, — это выполнить «Просмотр исходного кода» на странице их демонстрационного сайта, где упоминается это поведение. Демонстрационная страница на момент публикации находится здесь: http://www.trirand.com/blog/phpjqgrid/examples/hierarchy/subgrid_loadonce/default.php

person Chris Ammerman    schedule 26.05.2011