我有一个 Telerik MVC 网格。
其中 1 列需要对某些用户隐藏。
这很容易使用 .Visible 实现
问题是,当我为该行启动编辑模式时,我想要隐藏的列显示在编辑视图中。
知道如何从网格视图和编辑视图中隐藏列吗?
编辑:我正在使用 Pop Up 编辑模式和 Ajax 绑定。
我有一个 Telerik MVC 网格。
其中 1 列需要对某些用户隐藏。
这很容易使用 .Visible 实现
问题是,当我为该行启动编辑模式时,我想要隐藏的列显示在编辑视图中。
知道如何从网格视图和编辑视图中隐藏列吗?
编辑:我正在使用 Pop Up 编辑模式和 Ajax 绑定。
从编辑表单中隐藏列取决于编辑模式。您还没有指定您使用的编辑模式,所以我将为每一个提供一个解决方案:
除了 Atanas 的出色响应之外,如果您使用服务器绑定,您可以使用 Html.EditorForModel 使用 ShowForDisplay 和 ShowForEdit 属性来确定何时为属性创建脚手架。不幸的是,没有内置方法可以独立设置这些,但您可以创建和注册自己的 ModelMetadataProvider。我使用了这个 SO 答案中的代码,它让我可以轻松地指定在 C# 代码的编辑表单上显示的内容。
我希望这会有所帮助......并且对于行之间的所有空间感到抱歉,但是没有它,代码看起来很乱。
就像 Atanas Korchev 所说,您可以使用 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) _
....)