Extjs 只读属性网格

Extjs 只读属性网格,extjs,extjs4,Extjs,Extjs4,有没有办法使ExtJS4 PropertyGrid(Ext.grid.property.grid)不可编辑 AFAICS没有“可编辑”或“只读”配置选项。一种解决方案是防止选择任何单元格: var myPropertyGrid = Ext.create('Ext.grid.property.Grid', { ... }); myPropertyGrid.getSelectionModel().setLocked(true); 另一种解决方案是添加侦听器,以防止启动编辑组件: list

有没有办法使ExtJS4 PropertyGrid(Ext.grid.property.grid)不可编辑


AFAICS没有“可编辑”或“只读”配置选项。

一种解决方案是防止选择任何单元格:

var myPropertyGrid = Ext.create('Ext.grid.property.Grid', { ... });
myPropertyGrid.getSelectionModel().setLocked(true); 

另一种解决方案是添加侦听器,以防止启动编辑组件:

    listeners: {
        'beforeedit': {
            fn: function () {
                return false;
            }
        }
    }

此解决方案的问题是,不能将单元格标记为复制(Ctrl+C)内容

使用
sourceConfig
将编辑器设置为
Ext.form.DisplayField

Ext.create('Ext.grid.PropertyGrid', {
    sourceConfig: {
        field1: {
            displayName: 'Editable Field'
        },
        field2: {
            displayName: 'Readonly Field',
            editor: Ext.create('Ext.form.DisplayField')
        }
    },
    source: {
        field1: "Some property",
        field2: "Some other property",
    }
});

还有一个决定,但此后不允许选择文本:
myGrid.findPlugin('cellediting').disable()


我在Extjs 6.0上测试了它。

我还没有尝试过,但是有一个禁用的配置默认为false,尝试将其设置为true?@Amalea不错的主意,但它只是完全禁用了这个东西,给出了一个空的灰色面板(正如我猜的那样)。。。实际上没有,它确实显示属性,但是在半透明的灰色遮罩下。如果我能摆脱这个掩码,它应该会起作用。虽然这段代码可能会回答这个问题,但最好包含一些上下文,解释它是如何工作的以及何时使用它。从长远来看,纯代码的答案是没有用的。这在extjs 6.5.3中对我很有用。我在afterrender事件处理程序中进行了调用。
Ext.define('MyPropertyGrid', {
    extend: 'Ext.grid.property.Grid',
    xtype: 'mypropertygrid',
    source: {
        field1: 'value of field1',
        field2: 'value of field2'
    },
    sourceConfig: {
        field1: {
            editor: {disabled: true}
        },
        field2: {
            editor: {disabled: true}
        }
    }
});