Это старый вопрос, но я боролся с тем же, поэтому решил поделиться тем, что сделал.Ответ Эонасдана правильный.В моем случае я добавил код в события subGridRowExpanded и subGridRowCollapsed для хранения идентификатора строки, которая была развернута (я разрешил раскрывать только одну строку за раз, но вы также можете использовать коллекцию).Затем я добавил код в событие loadComplete для таблицы, чтобы заново открыть строку, свернутую после обратной передачи.Эта часть очевидна, но вот два кикера: 1. Повторное расширение подсетки по какой-то причине не приводит к сохранению ее данных.Поэтому мне пришлось вернуться на сервер, чтобы получить его.Я сделал это, повторно отправив строку подсетки (которая имеет идентификатор сетки, подчеркивание и rowid).2. По какой-то причине вы должны использовать таймер и расширить подсеть после задержки (даже 1 мс работает).Это похоже на то, что вы не можете развернуть сетку во время самого события loadComplete, но если вы подождете галочку, это будет работать нормально.
Так вот так:
var expandSubGrid = function(){
$('#grid').jqGrid('expandSubGridRow', expandedRowID);
$('#grid_' + expandedRowID).trigger('reloadGrid');
};
//the loadComplete event handler which was wired up when I created the grid
var grid_loadComplete = function () {
//expand the subgrid
window.setTimeout(expandSubGrid, 1);
};