Extjs4 CheckboxModel使某些特定字段可编辑

Extjs4 CheckboxModel使某些特定字段可编辑,extjs4,extjs-mvc,Extjs4,Extjs Mvc,我正在为复选框列使用checkboxmodel插件。但是,我想要的是“如果我选中一列,该行的某些单元格将是可编辑的”…我搜索了很多,但没有运气。我正在使用MVC模式,因为这个插件,我不知道如何处理它 /**网格视图**/ 插件:[ Ext.create('Ext.grid.plugin.celleediting'{ 单击编辑:2 }) ], selType:'cellmodel', selModel:Ext.create('Ext.selection.CheckboxModel'{ checkO

我正在为复选框列使用checkboxmodel插件。但是,我想要的是“如果我选中一列,该行的某些单元格将是可编辑的”…我搜索了很多,但没有运气。我正在使用MVC模式,因为这个插件,我不知道如何处理它

/**网格视图**/
插件:[
Ext.create('Ext.grid.plugin.celleediting'{
单击编辑:2
})
],
selType:'cellmodel',
selModel:Ext.create('Ext.selection.CheckboxModel'{
checkOnly:对,
听众:{
选择更改:功能(型号、记录){
如果(记录[0]){
//使字段的任何单元格都可编辑
}
}
}
}),
{
标题:'name',
数据索引:'name'},
{
标题:'数量',
数据索引:'数量',
}
在这里,如果我选中任何一行,我想使网格的“数量”字段可编辑…如果有人能提供帮助,那就太好了…

试试这个:

1) 创建编辑器插件实例以供参考:

var editor = Ext.create('Ext.grid.plugin.CellEditing', {
            clicksToEdit: 2
        });
2) 在网格插件定义中使用此实例:

plugins: [
        editor
    ]
3) 修改selModel定义,使其看起来像这样:

selModel: Ext.create('Ext.selection.CheckboxModel', {
        checkOnly: true,
        listeners: {
            selectionchange: function(model, records) {
                if (records[0] && !editor.editing) {
                    editor.startEdit(records[0], 2);    // 2 is the number of column you want to edit
                }
            }
        }
    }),

使用此解决方案,选中网格行时,您将只能编辑一个单元格。此外,如果选择发生变化等情况,您还需要实现额外的逻辑来停止编辑以前编辑的单元格。。。希望这个提示能对您有所帮助。

由于mvc模式,我应该在何处声明var编辑器,实际上不需要在外部创建编辑器变量。您可以使用:Ext.create('Ext.grid.plugin.celleediting',{clicksToEdit:2,pluginId:'celleedit'});然后在selectionchange事件中:var editor=model.view.ownerCt.getPlugin('celledit');model.view.ownerTit中的内容将引用Ext.grid.Panel对象没有“开箱即用”的方式编辑多行。您需要自己搜索/实现多行编辑器。我将基于Ext.grid.plugin.cellbediting的源代码实现自己的Ext.grid.plugin.Editing子类,使其能够一次编辑多个单元格。