【问题标题】:Make kendo grid cell editable or read-only depending on other cell's state根据其他单元格的状态使剑道网格单元格可编辑或只读
【发布时间】:2017-09-20 15:11:50
【问题描述】:

我有一个带有内联编辑功能的剑道网格。如果选中了行中的另一个单元格,我希望能够使该行中的一个单元格可编辑。如果未选中,则我希望该单元格为只读。

我的专栏是这样的:

columns: [
    { field: "Title" }, // string
    { field: "Body" }, // string
    { field: "IsCalculated", template: "#= IsCalculated ? 'Yes' : 'No' #" }, // boolean
    { field: "Expression" } // string
]

如果选中Calculated,那么我希望Expression 是可编辑的,否则,我希望它是只读的。

我查看了剑道网格的配置文档,并尝试了 columns.editable 函数,但正如文档中所述:“当单元格/行为 about 时执行的 JavaScript 函数要打开进行编辑。返回的结果将决定是否为该列创建编辑器。"

我可以使用这个函数来确定单元格在打开之前是可编辑的还是只读的,但我希望能够在单元格打开进行编辑并且选中或取消选中 Calculated 复选框时对其进行更改。

【问题讨论】:

  • 我猜你可能必须做两件事:1)使用你描述的功能来防止在未选中该框的情况下编辑单元格和 2)观察计算变化如果未选中该框,则可能会调用网格的 closeCell 函数(不确定此时您希望对任何输入的值发生什么)

标签: javascript kendo-ui kendo-grid


【解决方案1】:

尝试使用cancelRow() 阻止edit 事件:

edit: function(e) {
    if (!e.model.IsCalculated &&
        $(e.container).find('input').attr("name") == "Expression") 
    {
        this.cancelRow();
    }
}

Demo

更新 - 更好的条件:

if (!e.model.IsCalculated &&
    $(e.container).find('input[name="Expression"]').length) // <---

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多