在editgrid中使用combobox需要注意的事项

 

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}});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值