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