jQGrid, как сделать колонку редактируемой в диалоге добавления, но не во время (встроенного) редактирования
У меня есть jQGrid со столбцом, который я хочу редактировать только при добавлении новой строки.
Я видел примеры того, как это сделать, когда редактирование и добавление происходят в диалоге, но есть ли способ сделать это с помощью встроенного редактирования?
Я пытался использовать grid.setColProp() в beforeShowForm:, но это не работает (столбец остается только для чтения и отсутствует в диалоговом окне добавления).
Пример включения / выключения столбца на основе диалога:
http://www.ok-soft-gmbh.com/jqGrid/CustomFormEdit.htm
1 ответ
Поскольку вы используете пример из моих старых ответов ( этого и этого), я чувствую, что должен ответить и на ваш вопрос.
В старом примере все поля, которые можно изменить во время диалогов "Добавить" или "Редактировать", имеют свойство editable:true
, Поля, которые должны отображаться только в диалоговом окне Добавить, будут скрыты внутри дескриптора события beforeShowForm. Таким же образом мы можем временно переключить некоторые поля в editable:false
до вызова метода editRow и возврата к editable:true
сразу после звонка:
onSelectRow: function(id) {
if (id && id !== lastSel) {
grid.jqGrid('restoreRow',lastSel);
var cm = grid.jqGrid('getColProp','Name');
cm.editable = false;
grid.jqGrid('editRow', id, true, null, null, 'clientArray');
cm.editable = true;
lastSel = id;
}
}
Вы можете увидеть это в прямом эфире здесь.
ОБНОВЛЕНИЕ: Бесплатный jqGrid позволяет определить editable
в качестве функции обратного вызова. Смотрите статью в вики. Это позволяет сделать столбец редактируемым в одних строках и держать недоступным для редактирования в других строках.