ExtJS 4 RowEditing根据记录禁用一列的编辑

Ask*_*ken 21 grid extjs4

我正在实现一个网格面板,其中最后四列可编辑为大多数行.问题是我希望能够禁用编辑,假设第一个如果record.get('status')= 4,那么最终确定并且只有两列可以编辑.

有没有办法禁用显示这些行的编辑?我可以使用CellEditing来做,但想继续使用RowEditing插件.

此致,克里斯蒂安

Mol*_*Man 38

使用beforeedit事件:

grid.on('beforeedit', function(editor, e) {
  if (e.colIdx === 0 && e.record.get('status') == 4)
    return false;
});
Run Code Online (Sandbox Code Playgroud)

更新
上面的解决方案不适用于rowEditor.
但是,您可以禁用所需的字段beforeedit.为此,您应该能够访问rowediting插件.将pluginId分配给插件:

plugins: [
    Ext.create('Ext.grid.plugin.RowEditing', {
        clicksToEdit: 1,
        pluginId: 'rowEditing'
    })
],
Run Code Online (Sandbox Code Playgroud)

现在,如果满足某些条件,则禁用所需字段:

grid.on('beforeedit', function(editor, e) {
    if (e.record.get('status') === 4 ){
         grid.getPlugin('rowEditing').editor.form.findField('fieldToDisable').disable();
    }
    else{
        grid.getPlugin('rowEditing').editor.form.findField('fieldToDisable').enable();
   });
Run Code Online (Sandbox Code Playgroud)

这是demo(尝试编辑第一行).

编辑

如果上面的JSFiddle不起作用,请尝试更新版本.

  • 2011年的问题,帮助我到了今天.谢谢所有参与者 (2认同)