I just wanted to share in case anybody else ever needed to do this, since I didn't receive any help from forum posts.
To summarize, you create a Ext.grid.ColumnModel, store a hash of column editors as a property on the ColumnModel by setting 'editors' in config, and then do a lookup for the particular editor when ColumnModel's 'getCellEditor' event is fired. I'm not sure if that's the the PropertyGrid panel does, but I specifically needed grouping so PropertyGrid wasn't going to work for me. This turns out to work very well for me.
Code:
Code:
var currentColumnModel = new Ext.grid.ColumnModel({
columns: [
{id: '_Caption', header: 'Name', width: 90, dataIndex: 'Caption', hideable: false},
{id: '_Category', header: 'Category', width: 90, dataIndex: 'Category', hideable: false},
{id: '_Value', header: 'Value', width: 90, dataIndex: 'Value', hideable: false, editable:true}
],
editors: {
'DATE': new Ext.grid.GridEditor(new Ext.form.DateField({})),'PEOPLE': new Ext.grid.GridEditor(new Ext.form.ComboBox({store: new Ext.data.SimpleStore({id: 0,fields: ['id', 'name'], data: [["83", "Estelleta Warren"]]}), mode: 'local', triggerAction: 'all', valueField: 'id', displayField: 'name', editable: false}))
},
getCellEditor: function(colIndex, rowIndex) {
var editorList = store.getAt(rowIndex);
if(editorList == null){
alert("Could not get record for row" + rowIndex + "!");
}
return this.editors['DATE'];
}
});
Now, when hooking the column model up to a GridPanel, it's essential that you set the 'cm' property, not the 'columns' property! This one hung me up for a while, but no more!
Anyway, hope this helps somebody ...