jQGrid, как сделать колонку редактируемой в диалоге добавления, но не во время (встроенного) редактирования - PullRequest
8 голосов
/ 29 ноября 2010

У меня есть jQGrid со столбцом, который я хочу редактировать только при добавлении новой строки.

Я видел примеры того, как это сделать, когда изменения и добавления происходят в диалоге, ноЕсть ли способ сделать это с помощью встроенного редактирования?

Я пытался использовать grid.setColProp () в beforeShowForm:, но это не работает (столбец остается только для чтения и не присутствует вдиалоговое окно добавления).

Пример включения / выключения столбца на основе диалогового окна:
http://www.ok -soft-gmbh.com / jqGrid / CustomFormEdit.htm

1 Ответ

18 голосов
/ 30 ноября 2010

Поскольку вы используете пример из моих старых ответов ( это и это ), я чувствую, что должен ответить и на ваш вопрос.

В старый пример все поля, которые могут быть изменены в диалоговых окнах Добавить или Изменить, имеют свойство 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 в качестве функции обратного вызова.См. статью вики .Позволяет сделать столбец редактируемым в некоторых строках и удерживать недоступным для редактирования в других строках.

...