如果使用Ext.form.ComboBox 作为editor,并设置了store,在选择后,在表格单元中显示的是store中的displayfield 而不是valuefield

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值