Динамическое расширение подсетки в цикле - JQGrid - PullRequest
1 голос
/ 08 ноября 2011

У меня есть Grid с подсетью с использованием subGridRowExpanded.

И я хочу динамически развернуть некоторые строки сетки, поэтому я написал следующее в GridComplete Event of First Grid.id - это массив идентификаторов строк моей таблицы.

for(int i =0; i< ids.length; i++) {
    //Checking with condition
    $("#myGridName").expandSubGridRow(ids[i]);
}

Я также пытался использовать следующий код, но по какой-то причине флажки в GridComplete второго уровня добавляются только для последней расширенной строки.

$("#myGridName").expandSubGridRow(ids[0]);
$("#myGridName").expandSubGridRow(ids[1]);

Над кодом расширяются соответствующие строки.Но,

В событии GridComplete Subgrid, у меня есть флажки в каждой строке.

Итак, здесь мне нужно проверить некоторые из полей Chekc.

НоПроблема заключается в том, что

Ошибка subgrid_row_id

т.е. идентификатор последней подсетки, которая должна быть расширена, назначается в SubGridRowExpanded Родительской сетки.

Примечание.строка в подсетке

Заранее спасибо.

1 Ответ

0 голосов
/ 08 ноября 2011

Если я вас правильно понял, у вас очень близкая проблема, как описано в ответе . То, что вы пытаетесь сделать, похоже на то, что должно делать свойство expandOnLoad: true опции subGridOptions. Как я описал в , ответ jqGrid не поддерживает очереди запросов Ajax. Если вы выполните

$("#myGridName").expandSubGridRow(ids[0]);

с удаленным datatype или subgridtype ('json' или 'xml') запрос Ajax будет отправлен на сервер. До получения соответствующего ответа от сервера внутреннее свойство

$("#myGridName")[0].grid.hDiv.loading

будет установлен на true, а все другие запросы Ajax, например, от $("#myGridName").expandSubGridRow(ids[1]) будут просто пропущены (игнорируются) .

Та же проблема (ошибка) существует в текущей реализации expandOnLoad: true. Если вы откроете в официальную демонстрацию jqGrid узел дерева «Иерархия (4.0) новый», а затем посмотрите демонстрацию «Развернуть все строки при загрузке», вы увидите, что не все строки правильно развернуты как и было обещано (вы должны прокрутить сетку, чтобы увидеть все подсетки).

Я думаю, что для правильного осуществления расширения подсеток при загрузке нужно сделать следующее

  • Вы должны изучить список свернутых подсеток (соответствующая строка имеет класс "sgcollapsed") и развернуть только первую найденную подсетку .
  • Расширение следующей подсетки должно быть сделано только после того, как ответ от сервера будет получен и обработан .

Я могу порекомендовать вам использовать success функцию обратного вызова опций ajaxSubgridOptions jqGrid, поскольку после загрузки подсетки нет события loadComplete. Текущая реализация запроса Ajax в подсетке использует complete функцию обратного вызова jQuery.ajax (см. здесь ), которая будет вызываться до success обратного вызова , Таким образом, вы можете определить свой обратный вызов success как метод опции ajaxSubgridOptions jqGrid. Внутри обратного вызова success вы можете вызвать $("#myGridName").expandSubGridRow(ids[i]) для следующего узла (если он еще не раскрыт). В способе вы можете открыть все подсетки.

Для более эффективного перечисления подсетей может быть полезен ответ .

...