Я начну с общего замечания.Не рекомендуется отображать больше строк на странице, так как это будет возможно отображать сразу.Производительность сетки, например, с 10000 строками и 25 строками на странице, существенно лучше по сравнению с использованием 1000 строк на странице.
В любом случае, общее изменение нескольких строк данных в локальной сетке не используется delRowData
или addRowData
.Гораздо эффективнее заменить целые данные.Типичный код будет
var grid = $("#grid"),
p = grid.jqGrid("getGridParam"); // get reference to all parameters
p.data = newdata; // replace data parameter
grid.trigger("reloadGrid");
Поэтому я бы предложил вам получить копию данных (или у вас уже есть данные вне сетки), удалить элементы с идентификаторами, которые необходимо удалить,установите новое значение p.data
и триггер reloadGrid
для отображения первой страницы измененных данных.
Кстати, использование delRowData
происходит очень медленно, как вы описали.Причина - перекомпоновка браузера .Если у вас есть страница, например, с элементами 1000x10, и вы удаляете только первую строку (вы изменяете 10 элементов), то веб-браузер должен пересчитать стили CSS (например, положение) практически всех существующих элементов встр.Тогда удаление второго ряда будет почти таким же сложным.Таким образом, использование delRowData
или addRowData
в цикле будет очень неэффективным.При перезагрузке сетки jqGrid строит все тело сетки как один фрагмент HTML и помещает его в DOM страницы в операции one .Из-за этого перезагрузка сетки может быть очень быстрой.