CheckboxSelectionModel 几种获取值的方式,以及record数据通过combo来转换

  var _drivStore = new Ext.data.ArrayStore({
    id: 0,
    fields: ['id','text'],
    data: [[1,'张三'],[2,'李四']]
    });
    
  var _frmcombo = new Ext.form.ComboBox( {
     id :this.genId("frmcombo"),
     store :_drivStore,
     valueField :"id",
     displayField :"text",//记住 valueField :"id",displayField :"text" 名字只能是id和text 否则转换无效
     forceSelection :true,
     typeAhead :true,
     triggerAction :'all',
     selectOnFocus :true,// 用户不能自己输入,只能选择列表中有的记录
     allowBlank :false
    });

 

  this.comborenderer = function(combo){  //该方法通过利用combo来转换简单store里面的数据,如:返回的单据状态是 1,但是前台需要显示 在用(1:就表示在用的意思),这时候只需要在columnModel中做如下渲染就行了
   return function(value, cellmeta, record){
    var store = combo.getStore();
      var index = store.find(combo.valueField, value);
      var record = store.getAt(index);
      var displayText = "";
      if (record == null) {
     displayText = value;
      } else {
     displayText = record.data.text;
      }
    return displayText;
   }
  }

 

 //加油信息查询的抬头定义
 this.tainQueryCm = new Ext.grid.ColumnModel([
  new Ext.grid.CheckboxSelectionModel(),
  {header:"bid",dataIndex:"BID",sortable:true,resizable:true,width:100,hidden:true},
  {header:"单据编号",dataIndex:"BILLID",sortable:true,resizable:true,width:100,hideable:false},
  {header:"单据状态",dataIndex:"BILLSTATUS",hideable:false,sortable:true,editor:_busstatusCombo,renderer:this.comborenderer(_busstatusCombo),scope:this}//转换方法的调用  editor:_busstatusCombo,renderer:this.comborenderer(_busstatusCombo),scope:this 一定要有
  ]);

 

如果是单选的:var _record = Ext.getCmp("grid").getSelectionModel().getSelected(); //它得到的是 一个record,可以直接放store里面,也可以直接从record里面获得值

 if(_record)
   {
    var _w =new this.rpwin();
     _w.show();
     var _items = _w.items.itemAt(0);//得到formpanel对象
     _items.form.loadRecord(_record);//注意,只要formpanel里面的组件的name属性和record中的名字一致,用loadRecord就能一次性的赋值过去,而不需要想其他panel里面一个个通过Ext.getCmp('...').setRawValue('ssss');
   }else{
    Ext.Msg.alert('提示','请选择一张单据');
    return;
 }

 

如果是多选:就会稍微复杂一点,因为它得到的是个record数组,你要得到某条记录的值 需要先遍历record数组得到单个的record

 

 var _selmodels = Ext.getCmp(this.genId("main")).getSelectionModel();
   if(_selmodels.hasSelection())
   {
    var _w =new this.rpwin();
     _w.show();
     var _items = _w.items.itemAt(0);//得到formpanel对象(注意这个我是封装在一个类中了,而且该窗体的创建代码和窗体里面的组件代码并不在一个js中,所以才需要这样得到,一般情况下只需要用formpanel的名字就行)
     var _selections = _selmodels.getSelections();
    Ext.each(_selections,function(item){//遍历record数组
     _items.form.loadRecord(item);//将遍历出来的某个record加载到formpanel中
    });
   }else{
    Ext.Msg.alert('提示','请选择一张单据');
    return;
   }

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值