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

Другие вопросы по тегам