extjs的EditorGridPanel中的ComboBox列中显示值的问题

有一段时间没写博客了,最近因项目一直在忙,终于抽出空来写点东西,在项目中使用了extjs的editorgridpanel,但是其中的combobox在选择了相应的选项后,grid中显示的是值域(valueField)的值,而非意愿中的显示域(displayField)的值,在网上搜索了一番,结果几乎都是在定义带combobox的列时配置其renderer的属性,下面是网上最常见的2中处理这个问题的代码。

第一种:在渲染时利用Combobox来设置

//这是编辑框

 {

                  text: '改扩建类型',
                   name:'Upgrading_Type',
                  align:"center",
                  flex:1,
                  dataIndex: 'Upgrading_Type',
                  editor:combo,
                  defaultValue:'1',
                  renderer:Ext.util.Format.comboRenderer(combo)

  }

//这是ComboBox

var combo = new Ext.form.ComboBox({
          store:typeStore,
          istConfig: {
              emptyText: "未找到匹配项",
              maxHeight: 150
          },
          id:'cb',
          name: "Config_Value",
          triggerAction: "all",        //单击触发按钮显示全部数据
          displayField: "Config_Name",
          valueField: "Config_Value",
          hiddenName:"Config_Value",
          queryMode: "local",
          forceSelection: true,        //要求输入值必须在列表中存在
          typeAhead: true,     //允许自动选择匹配的剩余部分文本
            value: "1"

      });

//下面是处理此问题的方法---Ext.util.Format.comboRenderer(combo)  

       Ext.util.Format.comboRenderer = function(combo){
          return function(value){
              var record = combo.findRecord(combo.valueField,value);
              return record ? record.get(combo.displayField) : '123';
          }
  }

第二种:通过Store对象来获取record来设置

前面的编辑框的代码和ComboBox如同上面的,下面的是处理的方法

//获取当前id="cb"的comboBox选择的值
                      var index = typeStore.find(Ext.getCmp('cb').valueField, value);
                      var record = typeStore.getAt(index);
                      var displayText = "";
                      if (record == null) {
                          displayText = value;
                      } else {
                          displayText = record.data.Config_Name;//获取record中的数据集中的Config_Name字段的值
                      }
                      return displayText;
                  }

经过了一番尝试以后结果发现这两种办法都不行,两种办法都执行了else,所以下面是我尝试成功的

一个灰常简单的办法。

renderer:function(value){ return value == '1' ? '扩建' : '工艺提升' }

如图:显示就正常啦

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sonwing_for

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值