Ответ 1
Если вам нужно выполнить некоторые действия по инициализации только для формы "Добавить", вы можете использовать как минимум два подхода:
- использование свойства
defaultValue
как функции внутри editoptions. Функция обратного вызоваdefaultValue
может предоставить значение для соответствующего поля формы "Добавить" на основе данных из выбранной строки. Для оптимизации вы можете прочитать данные из текущей выбранной строки один раз в beforeInitData обратном вызове/событии. Вы можете просто прочитать данные, которые вам нужны, или сделать синхронный вызов на сервер, чтобы получить необходимую вам информацию. Единственным недостатком использования свойстваdefaultValue
является то, что он использует метод jQuery.val для установки значения по умолчанию для всех полей формы добавления с exception 'checkbox'edittype
. Для флажков jqGrid установлено свойство check из флажкаfalse
,0
,no
,off
илиundefined
не найдено в значении, возвращаемом свойствомdefaultValue
. Таким образом, подход не будет работать для других типов редактирования. Например, он может выйти из строя для custom edittype. - использование beforeShowForm или afterShowForm. Внутри функций обратного вызова вы можете установить любое значение формы. Вы можете найти подачу соответствующего столбца сетки по идентификатору поля, которое совпадает с значением свойства
name
соответствующего столбца.
Как вы уже знаете, вы можете получить идентификатор текущей выбранной строки относительно getGridParam
и получить данные из выбранной строки
var selRowData, rowid = grid.jqGrid('getGridParam', 'selrow');
if (rowid !== null) {
// a row of grid is selected and we can get the data from the row
// which includes the data from all visible and hidden columns
selRowData= grid.jqGrid('getGridParam', 'selrow');
}
где grid
- объект jQuery, такой как $('#list')
, который выбирает основной элемент <table>
сетки.
В демо вы можете увидеть, как работает первый подход, описанный выше.