2009-12-21 3 views
1

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

grid.clearGridData(); 
for(var i = 0; i < data.length; i++) 
{ 
    grid.addRowData(i+1, data[i]); 
} 
grid.trigger(”reloadGrid”); 

А на некоторых больших наборах данных, это приводит к тому, браузеру для отображения «JavaScript используют слишком много ресурсов ... бросить курить/продолжить» сообщение в IE и FF, как правило, после нескольких «Продолжается», все в порядке. Это для наборов данных ~ 2000 строк.

Я могу разбить это на несколько кусков с помощью setTimeout, но это чувствует себя глупо.

Использование версии 3.3 jqgrid.

ответ

1

Моя первая мысль состоит в том, что 2000 строк - это обычно слишком много для одной страницы; пользователи просто не смогут обработать эту информацию. Если они делают, то все это необходимо по какой-то причине, возможно, стоит экспортировать в CSV, поскольку обычно это упрощает выполнение тех вещей, которые хотелось бы делать на 2000 строках данных, например произвольной статистике.

Моя следующая мысль заключается в том, что если вам все еще нужно это сделать, вы можете попробовать перейти на самую последнюю версию jqGrid (в настоящее время 3.6.1) в надежде, что они немного оптимизировали этот путь.

Еще одна идея: если вы используете JSON, попробовали ли вы настроить jqGrid, чтобы разрешить собственный синтаксический анализ браузера JSON? Это задокументировано here немного вниз по странице.

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

+0

думаю тоже. Это крайний случай в гораздо большем приложении, и его нужно обрабатывать изящно как-то - я не могу переключать передачи для этого случая. Спасибо за предложение JSON. Мне придется исследовать и переместить некоторую предварительную обработку, которая происходит на данных, в другое место. –

+0

Надеюсь, что это сработает - я ненавижу, когда случайные крайние случаи занимают большую часть времени разработчиков, но, похоже, это справедливо. –

+1

После 4 часов работы я действительно устал от jqgrid и, вероятно, полностью откажусь от него. Я .3 ревизии позади, и обновление вообще не работает: пользовательский интерфейс находится в лохмотьях и, в конечном счете, .addJSONdata «не является функцией». Переход от локальных данных к данным объектов javascript не является особенно простым и очень плохо документированным. –

1

Его поздний (2012), но он все еще может быть полезен. Использование:

$("#gridID").setGridParam({ data: JSONData }); 
$("#gridID").trigger("reloadGrid"); 

является более эффективным, чем петли addRowData.

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