其實你可以很容易地通過動態返回不同的編輯器做到這一點,根據您所在的列進行渲染。在您的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