Как скрыть столбец из сетки Telerik MVC и ТАКЖЕ из представления Edit - PullRequest
2 голосов
/ 25 мая 2011

У меня есть сетка Telerik MVC.

1 столбцов необходимо скрыть от определенных пользователей.

Этого легко достичь, используя .Visible

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

Есть идеи, как скрыть столбец как в виде сетки, так и в представлении редактирования?

Редактировать: я использую режим редактирования всплывающих окон и привязку Ajax.

Ответы [ 3 ]

5 голосов
/ 02 июня 2011

Скрытие столбца от формы редактирования зависит от режима редактирования.Вы не указали, какой режим редактирования вы используете, поэтому я дам решение для каждого из них:

  • Inline и InCell - вам просто нужно сделать столбец Readonly(), и он будетбольше не может быть редактируемым.

  • Popup или InForm - в этих режимах используется Html.EditorForModel, который отображает все свойства модели по дизайну.В результате будут показаны даже свойства, которые не связаны в виде столбцов.Чтобы что-то скрыть от формы редактирования, необходимо выполнить JavaScript с помощью события OnEdit .Однако событие OnEdit возникает только во время привязки Ajax.Из вашего описания не ясно, используете ли вы ajax или привязку к серверу.Если вы используете привязку к серверу, вам нужно подключиться к событию JavaScript OnLoad и скрыть ненужный столбец в редакторе с помощью jQuery.

0 голосов
/ 20 января 2012

Надеюсь, это поможет ... и извините за все пространство между строками, но без него код выглядел грязно.

Как сказал Атанас Корчев, вы можете использовать javascript, но есть гораздо более простой способ.Вы можете определить свой столбец как <ScaffoldColumn(False)> :

Public Class EntityS

    <Key()> _
    <ComponentModel.ReadOnly(True)> _
    <DisplayName("Id")> _
    <ComponentModel.DataAnnotations.Editable(False)> _
    **<ScaffoldColumn(False)> _**
    Public Property Id_EntityS As Integer

    ...

    ...

End Class



@(Html.Telerik().Grid(Of EntityS)() _

   .Name("Grid") _

   .DataKeys(Sub(keys)

             keys.Add("Id_EntityS")

    End Sub) _

    .ToolBar(Sub(commands)

                 commands.Insert().ButtonType(GridButtonType.ImageAndText) _
                                 .ImageHtmlAttributes(New With {.style = "margin-left:0"})

                 End Sub) _

      .DataBinding(Sub(dataBinding)

       dataBinding.Ajax() _

       ...

       End Sub) _

       .Columns(Sub(columns)

        ...

        columns.Command(Sub(commands)

        commands.Edit().ButtonType(GridButtonType.ImageAndText)

        commands.Delete().ButtonType(GridButtonType.ImageAndText)

        commands.Edit.HtmlAttributes("onedit")

        End Sub).Width(180).Title("Commands")

        End Sub) _

        .Editable(Sub(editing)

        editing.Mode(GridEditMode.PopUp).Window(Sub(window)

        End Sub)

        End Sub) _

        ....)
0 голосов
/ 21 августа 2011

В дополнение к отличному ответу Atanas, если вы используете привязку к серверу, вы можете использовать тот факт, что Html.EditorForModel использует свойства ShowForDisplay и ShowForEdit, чтобы определить, когда создавать леса для свойств. К сожалению, нет встроенного способа установить их независимо, но вы можете создать и зарегистрировать свой собственный ModelMetadataProvider. Я использовал код из этого SO-ответа, и он позволил мне легко указать, что отображается в формах редактирования в коде C #.

Отображение различных полей в режимах EditorForModel и DisplayForModel в MVC2

...