Telerik mvc 如何从Telerik MVC网格和编辑视图中隐藏列

Telerik mvc 如何从Telerik MVC网格和编辑视图中隐藏列,telerik-mvc,Telerik Mvc,我有一个Telerik MVC网格 其中1列需要对某些用户隐藏 这很容易实现使用。可见 问题是,当我启动行的编辑模式时,我想要隐藏的列显示在编辑视图中 知道如何在栅格视图和编辑视图中隐藏柱吗 编辑:我使用弹出式编辑模式和Ajax绑定。从编辑表单隐藏列取决于编辑模式。您尚未指定使用哪种编辑模式,因此我将为每种模式提供解决方案: Inline和InCell-只需将列设置为Readonly(),它将不再可编辑 弹出或通知-这些模式使用Html.EditorForModel,按设计显示模型的所有属性。

我有一个Telerik MVC网格

其中1列需要对某些用户隐藏

这很容易实现使用。可见

问题是,当我启动行的编辑模式时,我想要隐藏的列显示在编辑视图中

知道如何在栅格视图和编辑视图中隐藏柱吗


编辑:我使用弹出式编辑模式和Ajax绑定。

从编辑表单隐藏列取决于编辑模式。您尚未指定使用哪种编辑模式,因此我将为每种模式提供解决方案:

  • Inline和InCell-只需将列设置为
    Readonly()
    ,它将不再可编辑

  • 弹出或通知-这些模式使用
    Html.EditorForModel
    ,按设计显示模型的所有属性。因此,即使未绑定为列的属性也将显示。必须通过事件使用JavaScript对编辑表单隐藏某些内容。但是,OnEdit事件仅在Ajax绑定期间引发。从您的描述中不清楚您使用的是ajax还是服务器绑定。如果使用服务器绑定,则必须钩住JavaScript事件,并使用jQuery在编辑器中隐藏不必要的列


除了Atanas的出色响应之外,如果使用服务器绑定,还可以使用Html.EditorForModel使用ShowForDisplay和ShowForEdit属性来确定何时为属性创建支架。不幸的是,没有内置的方法来独立地设置它们,但是您可以创建并注册自己的ModelMetadataProvider。我使用了这个SO答案中的代码,它让我可以轻松地指定在C#代码中编辑表单上显示的内容


我希望这有助于。。。很抱歉,行与行之间有这么多空格,但是如果没有,代码看起来很混乱

正如Atanas Korchev所说,您可以使用javascript,但有一种更简单的方法。您可以将列定义为

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) _

        ....)
公共类实体
_
_
_
_
** _**
公共属性Id\u实体为整数
...
...
末级
@(Html.Telerik().Grid(实体的)()_
.名称(“网格”)_
.数据密钥(子密钥)
键。添加(“Id\u实体”)
末端接头)_
.工具栏(子菜单(命令)
commands.Insert().ButtonType(GridButtonType.ImageAndText)_
.ImageHtmlatAttributes(使用{.style=“margin left:0”}新建)
末端接头)_
.数据绑定(Sub(数据绑定)
Ajax()_
...
末端接头)_
.列(子列)
...
columns.Command(子命令)
commands.Edit().ButtonType(GridButtonType.ImageAndText)
commands.Delete().ButtonType(GridButtonType.ImageAndText)
commands.Edit.HtmlAttributes(“onedit”)
末端子)宽度(180).标题(“命令”)
末端接头)_
.可编辑(子(编辑)
编辑模式(GridEditMode.PopUp).窗口(子窗口)
末端接头)
末端接头)_
....)

如果没有帮助,我总是删除我的答案。仅供参考,删除后仍保留负号,因此我不会为销售代表这样做。公平地说,阿塔纳斯,我想我只是很生气,在给你一个负号后,我的问题得到了负号。我将更新问题,使其更具体,以供将来参考。谢谢Atanas!非常好的解释所有排列,非常感谢!