gpt4 book ai didi

gridview - 如何在弹出编辑器中禁用某些列的编辑?

转载 作者:行者123 更新时间:2023-12-02 21:19:20 25 4
gpt4 key购买 nike

ASP.Net MVC 3、Kendo UI Web、Kendo 网格控件。

我将几个字段配置为只读:

.Model(model =>
{
model.Field(it => it.foobar).Editable(false);
...

在内联模式下它按预期工作。但是当我将模式切换到弹出窗口时,编辑器会显示整个结构,因此我可以编辑我想要的任何字段(也标记为不可编辑的字段)。

那么如何标记它们,以便弹出编辑器只显示那些标记为编辑的内容?

最佳答案

Popup编辑器使用MVC的编辑器模板,完全独立于Kendo的。如果您想将该字段标记为只读,则需要在代码中的模型中附加元数据属性。例如:

public class MyClassUsedInGrid
{
[System.ComponentModel.DataAnnotations.Editable(false)]
public string foobar {get;set;}
}

更新:

抱歉,原来的答案不完整。您需要创建一个自定义模板来处理这个问题,因为内置模板不支持它(我的项目中有这个,但忘记了)。为此,请在/Views/Shared/EditorTemplates/string.cshtml 下创建一个 View (我将在 Razor 中展示此 View ,但很容易移植到 aspx 语法)。

代码如下所示:

@model string
@if(ViewData.ModelMetadata.IsReadOnly){
@Html.DisplayForModel()
}else{
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line" })
}

这将正确处理可编辑元数据属性。当然这仅适用于字符串,您应该对其他对象执行类似的操作。如果您正在寻找其他内置模板的外观,请查看此网站:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

性能旁注:如果您只在应用程序中的几个地方的一个地方执行此操作,那么最好将其放在/Views/YourView/EditorTemplates/下。原因是内置模板被编译到框架中,并且通常会运行得更快。或者将其保留在 Shared 文件夹中,但将其命名为 ExtendedString 之类的名称,然后在查看标记属性中使用显式 UI 提示将其设置为“可编辑”,如下所示:

[System.ComponentModel.DataAnnotations.Editable(false)]
[System.ComponentModel.DataAnnotations.UIHint("ExtendedString")]
public string foobar {get;set;}

关于gridview - 如何在弹出编辑器中禁用某些列的编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13112353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com