其实你可以很容易地通过动态返回不同的编辑器做到这一点,根据您所在的列进行渲染。在您的ColumnModel对象中,您可以定义如下所示的内容。请注意,我得到每个记录的类型属性以确定其类型。我有一个包含我所有不同类型的编辑器的对象,并且对于渲染器也是如此,然后基于类型i为该单元格提供不同的编辑器或渲染器。
editors: { 'default': {xtype:'textfield'},
texttype: {xtype:'textfield'},
numbertype: {xtype:'numberfield'},
combotype: {xtype:'combo'}....... etc. }
getCellEditor: function(colIndex, rowIndex) {
var store = Ext.getCmp('mygrid').getStore();
var field = this.getDataIndex(colIndex);
var rec = store.getAt(rowIndex);
var type = rec.get('type');
if (type in this.editors) {
return this.editors[type];
} else {
return this.editors['default'];
}
},
谢谢您的答复。但你错过了我的问题,对于每一行我可能需要不同的编辑器控件..不像你在这里显示的。它不是列,而是行。 – Moim 2010-11-16 07:32:10
对不起,我绝对误读了这个问题。我不知道如何在没有嵌套数据网格或使用多个网格的情况下完成此操作。问题是列模型需要在网格中的所有行上保持一致。 – 2010-11-16 14:44:15