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

时间:2013-08-07 20:59:16

标签: kendo-ui kendo-grid kendo-asp.net-mvc

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

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

有什么想法吗?

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

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

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

1 个答案:

答案 0 :(得分:2)

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

在你的剑道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对此进行配对。