Как настроить beforeShowForm с lib.web.mvc для отображения нередактируемых столбцов в форме добавления
Некоторые из моих столбцов недоступны для редактирования, но я хочу, чтобы все столбцы отображались в форме добавления.
Я думал, что смогу использовать событие beforeShowForm и вызвать функцию javascript, которая будет динамически изменять атрибут столбца обратно на редактируемый, чтобы они отображались в форме добавления.
2 ответа
Типичный подход для этого - сделать поля в целом редактируемыми и скрыть их в диалоге редактирования.
Вы можете скрыть / показать поля, просматривая строки таблицы, идентификаторы которых создаются следующим образом:
tr_ColumnName
Так что в случае, если у вас есть столбец UserName, идентификатор будет выглядеть так:
tr_UserName
Предполагая, что вы используете jQuery, вы можете подключить это к вашей конфигурации Lib.Web.Mvc следующим образом:
.Navigator(new Lib.Web.Mvc.JQuery.JqGrid.JqGridNavigatorOptions() { ... },
editActionOptions: new Lib.Web.Mvc.JQuery.JqGrid.JqGridNavigatorEditActionOptions()
{
...
BeforeShowForm : "function(form) { $('#tr_UserName', form).hide(); }"
},
addActionOptions: new Lib.Web.Mvc.JQuery.JqGrid.JqGridNavigatorEditActionOptions()
{
...
BeforeShowForm : "function(form) { $('#tr_UserName', form).show(); }"
}
);
Я понял, как использовать событие beforeShowForm.
Примечание: у меня есть оператор using в верхней части представления, поэтому мне не нужно использовать полное пространство имен
@using Lib.Web.Mvc.JQuery.JqGrid
Вот пример в форме навигатора:
.Navigator(new JqGrid.JqGridNavigatorOptions()
{ Add = true, Edit = false, Delete = false, Search = false },
null,
addActionOptions: new JqGridNavigatorEditActionOptions()
{
Url = Url.Action("Add"),
BeforeShowForm = "function () {$('#bob').jqGrid('setColProp',
'Place', {editable:true})
})