Как настроить 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})
    })
Другие вопросы по тегам