Kendo 网格 - 为每一行动态创建一个单元格 editable/uneditable

Kendo Grid - Make a cell editable/uneditable for each row dynamically

我有一个 Kendo 网格,其中 COR ABA 编号可能可编辑也可能不可编辑,具体取决于第一列中的值。所以,如果NOC Code=='C01',那么COR ABA No.是可以编辑的,否则是不可编辑的。

我通过在列上添加 Edit 事件并在该编辑处理程序中禁用 HTML 输入 Kendo 创建(当不允许编辑时)来实现此目的。 (在网格定义中,我有 Editable(true) 开始)。我想通过在网格的 DataBound 事件中进行逻辑检查来做到这一点。也就是说,在绑定所有数据之后,遍历数据,确定列何时不可编辑,并以某种方式防止这种情况发生。我的想法是简单地删除我假设 Kendo 在如上所述使用 Editable(true) 时为单元格添加的点击处理程序。是这样吗?或者如何?谢谢!

如果您不想让用户编辑单元格,我建议另一种方法,而不是在编辑事件上调用 closeCell()。这样一来,当用户单击单元格进行编辑时,单元格将不会显示输入。

<div id="grid"></div>
<script>
$("#grid").kendoGrid({
  columns: [
    { field: "id" },
    { field: "name" },
    { field: "age" }
  ],
  dataSource: {
    data: [
      { id: 1, name: "Jane Doe", age: 30 },
      { id: 2, name: "John Doe", age: 33 }
    ],
    schema: {
      model: {
        id: "id",
        fields: {
          "id": { type: "number" }
        }
      }
    }
  },
  editable: "incell",
  toolbar:["create"],
  edit: function(e) {
    if (!e.model.isNew() && e.container.index() == 0) {
      var grid = $("#grid").data("kendoGrid");
      grid.closeCell();
    }
  }
});
</script>