jqGrid: новое свойство данных в 3.7 есть ли метод setData?

Мое приложение снова и снова заполняет jqGrid результатами множества различных запросов, которые может сделать пользователь; запросы принимают форму: дайте мне заголовок, категорию документа, хиты, тип документа для всех документов, где документ содержит слово «x». Пользователь может сделать много таких (ajax) запросов один за другим: Выдать запрос. Прочитайте список заголовков, возвращенных базой данных. Поработай немного. Сделайте еще один такой запрос. И так далее, и так далее.

Я создаю сетку один раз, и когда вызов базы данных ajax возвращается с некоторыми данными, сетка сначала очищается, а затем повторно заполняется, например:

 $("#titles-table").jqGrid('clearGridData');
 .
 .
 .  // loop through the data returned by the ajax database call
      for (var i = 0 ...
      {
        row = ...
        $("#titles-table").jqGrid('addRowData',i, row); 
      }

Но теперь, в версии 3.7, в сетке появилось новое свойство data, которое предположительно работает быстрее, чем addRowData. В примерах, демонстрирующих это новое свойство data, показано, как сетка заполняется по мере создания ее экземпляра (по мере определения colModel и т. д. и т. д.). Но если предположить, что сетка уже существует и будет удалена с помощью вызова clearGridData, есть ли способ установить свойство сетки data для повторного заполнения сетка? Что-то похожее на clearGridData, например:

  $(#titles-table).jqGrid('setGridData', data);

Меня интересует более быстрый способ заполнения сетки. Firefox отображает сообщение «Сценарий занимает слишком много времени», когда в моей сетке 75 строк, но Chrome, Opera и Safari мгновенно справляются с этим объемом данных.


person Tim    schedule 18.07.2010    source источник
comment
Вы когда-нибудь решали это? Мне нужно сделать что-то подобное, динамически загружать свои данные, и меня интересует решение, если оно есть.   -  person John    schedule 02.04.2012


Ответы (1)


Согласно документам jqGrid, этот параметр можно изменить после сетка создается через setGridParam. Например:

$(#titles-table).jqGrid('setGridParam', data);
person Justin Ethier    schedule 18.07.2010
comment
Спасибо, Джастин, что указал мне на эту страницу. Однако я не добился успеха с подходом setGridParam. Когда свойство данных установлено таким образом, jqGrid предполагает, что он инициировал вызов ajax для извлечения данных, и код попадает в неопределенный дескриптор события. Сетка никогда не заполняется данными. - person Tim; 19.07.2010