Как использовать разные опции редактирования для добавления и редактирования форм в 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 событие, чтобы изменить editoptions? Кто-нибудь сделал что-нибудь подобное?

2 ответа

Решение

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

Поэтому вместо использования опций edit для установки поля формы только для чтения я использовал событие beforeShowForm параметров add & edit для добавления и удаления атрибута 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' arg является объектом jQuery, содержащим форму, я не смог получить селектор для успешного выбора нужного дочернего элемента, поэтому я просто использовал идентификатор, соответствующий имя colModel.

Это возможно с помощью встроенных опций jqgrid.

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

скрытый:true, editrules:{edithidden:true, обязательный:true....}, редактируемый: true

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

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

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