编辑网格时,如何按行禁用特定字段? Kendo UI ASP.Net MVC 包装器

Posted

技术标签:

【中文标题】编辑网格时,如何按行禁用特定字段? Kendo UI ASP.Net MVC 包装器【英文标题】:When editing a grid, how do I disable specific fields by row? Kendo UI ASP.Net MVC wrapper 【发布时间】:2013-08-09 10:33:10 【问题描述】:

我有一个使用 ASP.NET MVC 包装器的剑道网格,并且有多个列(比如第 1 列和第 2 列)。网格设置为 InCell 编辑模式。列 1、2 需要能够根据特定行的彼此值进行编辑(或阻止编辑)。

例如,如果第 1 列的值为真,则允许编辑第 2 列。 如果第 2 列的值为 false,则不允许编辑第 2 列。

有什么想法吗?

我找到了类似的示例,但使用了客户端扩展。

When editing a grid, how do I disable specific fields by row?

使用 ASP.Net MVC 包装器是否有类似的方法?

【问题讨论】:

Make cell readonly in Kendo Grid if condition is met的可能重复 【参考方案1】:

我们刚刚遇到了类似的问题,并找到了以下解决方案。这可能不是正确的方法,但它似乎适用于在行存在时禁用字段并在新行时启用。这个逻辑应该可以换成你需要的任何逻辑。

在您的 Kendo MVC 绑定中。 “disableOnEdit”是当单元格进入编辑模式时要调用的 javascript 函数的名称。

@(html.Kendo().Grid<yourModel>()
  .Name("grid")
...
  .Events(events => events.Edit("disableOnEdit"))
...

在你的 JavaScript 中:

function disableOnEdit(e) 
    if (e.model.isNew()) 
        // Leave it editable if the row is new.
     else 
        // Disable the editor for Element in this row if the row already exists.
        var select = e.container.find('input[name=Element]').data('kendoDropDownList');
        select.enable(false);
    

这种方法是从Kendo Grid Edit Docs借来的

请参阅关于不同条件的其他答案。

感谢 Chris Finlayson 对此进行配对。

【讨论】:

以上是关于编辑网格时,如何按行禁用特定字段? Kendo UI ASP.Net MVC 包装器的主要内容,如果未能解决你的问题,请参考以下文章

Kendo UI - 如何在编辑时使特定字段只读,同时在剑道网格中创建可编辑?

禁用在kendo网格中编辑

使用行编辑器进行编辑时,如何在 extjs 4.1.1 中禁用行的特定单元格?

如何允许kendo网格绑定到未定义的字段

Kendo Grid按行数自动调整大小

带有声明性编辑器模板的 Kendo 网格