Ext.override(Ext.grid.GridView, {
getColumnData : function() {
var cs = [], cm = this.cm, colCount = cm.getColumnCount();
for (var i = 0; i < colCount; i++) {
var name = cm.getDataIndex(i);
cs[i] = {
name : (typeof name == 'undefined' ? this.ds.fields.get(i).name : name),
renderer : cm.getRenderer(i),
id : cm.getColumnId(i),
style : this.getColumnStyle(i),
editor : cm.getCellEditor(i, 0)
//,cm: cm
};
}
return cs;
}
});
Ext.util.Format.comboboxRenderer = function(value){
var editor = this.editor;
if(editor){
var field = editor.field;
if(field && field.findRecord && field.valueField) {
if((typeof value.indexOf === 'function') && value.indexOf(',') != -1){
// we have a lovcombo with several options selected
var keys = value.split(',');
var values = [];
Ext.each(keys, function(key){
var rec = field.findRecord(field.valueField, key);
if(rec){
values.push(rec.data[field.displayField]);
}
});
return values.join(', ');
}else{
var rec = field.findRecord(field.valueField, value);
if(rec){
return rec.data[field.displayField];
}
}
}
}
return value;
};
具体例子:
{
header: "表现形式",
dataIndex: 'htmltype',
width:200,
renderer: Ext.util.Format.comboboxRenderer ,
editor:new Ext.form.ComboBox({
typeAhead: true,
triggerAction: 'all',
store:new Ext.data.SimpleStore({
fields:['value', 'text'],
data: [['1','单行文本'],['2','多行文本'],['3','带格式文本'],['4','CHECK BOX'],['5','选择项'],['6','关联选择'],['7','附件']]
}),
mode:'local',
emptyText:'',
valueField:'value',
displayField:'text',
selectOnFocus:true,
listClass: 'x-combo-list-small'
})
}