Как иметь разные параметры редактирования для добавления и редактирования форм в jqGrid

У меня есть jqGrid с информацией о пользователе, которую нужно редактировать в форме. Имя пользователя является неизменным, но должно отображаться в форме, чтобы пользователь знал, какого пользователя он редактирует. Пароль только для редактирования. Итак, в моей colModel у меня есть такие настройки:

{name:'username', index:'username', width:155, editable:true, editoptions: {readonly:'readonly'}}, 
{name:'password', index:'password', width:155, hidden:true, editable: true, edittype:'password', editrules:{edithidden:true}}, 

Это отлично работает для редактирования. Моя проблема заключается в добавлении, мне нужно сделать имя пользователя «не только для чтения». Я не вижу свойств для управления формой добавления и формой редактирования. Возможно, я могу использовать событие afterShowForm для изменения параметров редактирования? Кто-нибудь делал что-нибудь подобное?


person Donald Byrd    schedule 01.01.2010    source источник


Ответы (2)


В случае, если это полезно для кого-то еще, я не смог сделать это точно, но нашел способ добиться конечного результата.

Поэтому вместо использования editoptions для установки поля формы только для чтения я использовал событие beforeShowForm параметров добавления и редактирования, чтобы добавить или удалить атрибут только для чтения.

Итак, colmodel без readonly:

{name:'username', index:'username', width:155, editable:true}, 
{name:'password', index:'password', width:155, hidden:true, editable: true, edittype:'password', editrules:{edithidden:true}}, 

и параметры редактирования и добавления navGrid, чтобы включить только чтение (для добавления) или выключить (для редактирования). Обратите внимание, идентификатор тега INPUT будет значением поля name в colModel:

jQuery("#user-grid").jqGrid('navGrid','#user-grid-pager',
    { }, //options
    { // edit options
        beforeShowForm: function(frm) { 
            $('#username').attr('readonly','readonly'); 
        }
    }, 
    { // add options
        beforeShowForm: function(frm) { 
            $('#username').removeAttr('readonly'); 
        }
    }, 
    { }, // del options
    { } // search options
);

Кстати, хотя я знаю (согласно дампу jquery), что аргумент функции «frm» является объектом jQuery, содержащим форму, я не смог получить селектор для успешного выбора нужного мне ребенка, поэтому я просто использовал идентификатор, который соответствует имя модели colModel.

person Donald Byrd    schedule 15.01.2010
comment
Просто хотел сказать спасибо - у меня точно такие же требования, и я не мог понять, как вызвать функцию beforeShowForm. Это именно то, что мне было нужно - еще раз спасибо. - person Chad Gorshing; 07.03.2010
comment
то же самое Спасибо за публикацию. Это значительно сэкономило мне время. - person Robert Claypool; 16.05.2010

Это возможно со встроенными параметрами jqgrid.

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules

hidden:true, editrules:{edithidden:true, required:true....}, editable:true

Таким образом, вы можете сделать field_name редактируемым: false и field_id, как указано выше.

Это также охватывает другой вопрос для полей выбора, работает и для них.

person Amala    schedule 08.04.2011