Могу ли я изменить основной идентификатор строки в JQGrid без перезагрузки?

Я пытаюсь реализовать встроенную вставку в JQGrid. Мой подход до сих пор таков:

  • Используйте addRowData, чтобы поместить в конец пустую строку с ID=-1.
  • Используйте editGridRow для редактирования этой строки
  • Обнаружить на сервере, что это обновление на самом деле является вставкой, поскольку ID=-1, и вернуть новое значение ID

Удивительно, но эта схема Руба Голдберга работает очень хорошо. Однако, чтобы сделать его бесшовным, я хотел бы автоматически обновить идентификатор только что добавленной строки, чтобы пользователь мог продолжать редактировать другие столбцы. Я бы предпочел не делать grid.trigger("reloadGrid"), потому что я теряю фокус на этой строке.

я пробовал

grid.setRowData(-1, { MyPrimaryKeyField: newID });

но это не работает (он по-прежнему считает, что идентификатор строки равен -1). Есть ли простой способ изменить основной идентификатор строки без перезагрузки всей сетки?


person Herb Caudill    schedule 17.12.2009    source источник


Ответы (2)


На самом деле вы не можете изменить идентификатор основной строки сетки с помощью «setRowData», но есть простой способ сделать это:

$("#-1").attr('id',newId);

;-)

person Soren    schedule 22.05.2011

Вы можете обойти это, выполнив вызов AJAX для вставки и возврата нового идентификатора. Получив идентификатор, вызовите reloadGrid, а затем выберите строку, используя только что возвращенный идентификатор. Вы также хотели бы установить счетчик, пока вы делаете это, чтобы пользователь знал, что ваша страница занята. Не совсем то, что вы просите, но это должно удовлетворить ваши потребности.

person Justin Ethier    schedule 18.12.2009
comment
У меня была та же проблема, и хотя я согласен с тем, что это правильный способ сделать это, ответ Сорена обеспечивает функциональность, указанную в вопросе. Голоса за обоих! - person IronicMuffin; 03.03.2012