var storeO = new Ext.data.JsonStore({
root: 'roots',
totalProperty: 'totalProperty',
url: 'p2/operation_List.action',
pruneModifiedRecords: true,
fields: [ 'id', 'opcode', 'opname' ]
});
storeO.load({params:{start:0, limit:999}});
//由于ext是异步加载数据,所以你得先于主store将combobox的数据加载进来,否则会造成数据无法读取
Ext.util.Format.comboRenderer = function(combo){
return function(value){
var record = combo.findRecord(combo.valueField, value);
return record ? record.get(combo.displayField) : combo.valueNotFoundText;
}
};
var combOp = new Ext.form.ComboBox({
typeAhead: true, //
triggerAction: 'all', //用于用户点击combobox时显示所有下拉选项而不是仅仅只有已选项
lazyRender:true, //官方api上说如果comb用于grid必须加这个
pageSize: 6, //comb也能分页,每页的显示的个数
emptyText: msg_comm_searchby,
listWidth: 230, //
store: storeO,
valueField: 'id',
displayField: 'opcode'
});
var cm = new Ext.grid.ColumnModel({
columns: [
......
{
header: msg_admin_operation,
dataIndex: 'operation',
sortable: true,
editor: combOp,
renderer: Ext.util.Format.comboRenderer(combOp), // pass combo instance to reusable
width: 90
}
]
......
})
//需要给combobox一个renderer用来将servelet传来的id转化成显示值
var store = new Ext.data.JsonStore({
root: 'roots',
totalProperty: 'totalProperty',
url: 'p2/privilege_List.action',
pruneModifiedRecords: true,
fields: [ 'id', 'code', 'name', 'resource', 'operation' ]
});
// 最后才是主store,需要去combobox的valuefield而不是displayField
store.load({params:{start:0, limit:pageSize}});