Как установить значения полей по умолчанию для формы добавления в jqgrid из текущей строки - PullRequest
5 голосов
/ 30 октября 2011

Кнопка Добавить панель инструментов используется для добавления новой строки в jqgrid.Форма добавления, которая появляется, содержит все поданные поля пустыми.Как установить значения полей добавления из значений столбцов из строки, которая была текущей / выбранной при вводе команды добавления?JSON удаленных данных используется.Или, если это проще, как вызвать метод сервера, передавая текущую / выбранную строку, чтобы получить значения по умолчанию для формы добавления с сервера?

jqgrid также содержит скрытые столбцы.Если возможные значения из скрытых столбцов из текущей строки также должны быть отправлены, чтобы добавить контроллер, если форма добавления сохранена.

Обновление

Я попытался использовать прекрасное предложение Олега, используя

         afterShowForm: function(formID) {
           var selRowData, 
               rowid = grid.jqGrid('getGridParam', 'selrow');
           if (rowid === null) {
             // todo: how to cancel add command here
             alert('Please select row');
             return;
             }

           selRowData = grid.jqGrid('getRowData', rowid);
           if (selRowData === null) {
             alert('something unexpected happened');
             return;
             }

           $('#' + 'Baas' + '.FormElement', formID).val(selRowData.Baas);
           }

Приложение сохраняет форму добавления открытой после сохранения.После первого сохранения поле Baas остается пустым.Похоже, что afterShowForm событие запускается только один раз, а не после каждого сохранения.Как это исправить, чтобы можно было добавить несколько строк со значениями по умолчанию, не закрывая форму добавления?Как отменить или не разрешить команду добавления, если выбранной строки нет?

1 Ответ

4 голосов
/ 30 октября 2011

Если вам нужно выполнить некоторые действия по инициализации только для формы Add, вы можете использовать как минимум два подхода:

  • использование свойства defaultValue в качестве функции внутри editoptions ,Функция обратного вызова defaultValue может предоставить значение для соответствующего поля формы «Добавить» на основе данных из выбранной строки.В целях оптимизации вы можете прочитать данные из текущей выбранной строки один раз в обратном вызове / событии beforeInitData .Вы можете просто прочитать необходимые данные или сделать синхронный вызов на сервер, чтобы получить необходимую информацию.Единственный недостаток использования свойства defaultValue заключается в том, что он использует метод jQuery.val для установки значения по умолчанию для всех полей формы Add с исключением «checkbox» edittype.Для флажков jqGrid установить свойство флажка false, 0, no, off или undefined не найдено в значении, возвращаемом свойством defaultValue.Таким образом, подход не будет работать для других типов редактирования.Например, может произойти сбой для пользовательского типа редактирования.
  • при использовании 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>сетки.

В демоверсии вы можете увидеть, как работает первый подход, описанный выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...