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