ExtJS Combo 下拉列表正常显示HTML标签内容

解决问题:

http://www.iteye.com/problems/22617

http://www.iteye.com/problems/22681

 

原问题是,需要在combo上显示一些HTML标签,如 <a/><TestTag>xxx</TestTag>

 

 

1. 如果简单的使用combo的话,会如下图


2. 换个思路,把store里面的东西转码下看看?

var c = new Ext.form.ComboBox({
  fieldLabel: 'HTML标签',
  displayField: 'name',
  valueField: 'value',
  mode: 'local',
  triggerAction: 'all',
  store: new Ext.data.SimpleStore({
    fields: [{
      name: 'name',
      convert: function (v) {
        return Ext.util.Format.htmlEncode(v);
      }
    },
    'value'],
    data: [['xx', '1'], ['<MyTag /> ', '2']]
  })
})

 发现还是出问题了,如图



问题的原因同学们可以看下Combo的setValue方法.

 

3. 于是我们可以看下Combo的源码,其实下拉列表就是一个DataView.

所以我们可以考虑在XTemplate这里做手脚

  var c = new Ext.form.ComboBox({
    fieldLabel:'HTML标签',
    displayField:'name',
    valueField:'value',
    mode: 'local',
    triggerAction: 'all',
    store:new Ext.data.SimpleStore({
      fields:['name','value'],
      data:[['xx','1'],['<MyTag /> ','2']]
    }),
    //这里的values.name中的name就是displayField中的值,自己修改
    tpl:'<tpl for="."><div class="x-combo-list-item">{[Ext.util.Format.htmlEncode(values.name)]}</div></tpl>'
  })

 

如图,搞定:


 

//tz

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值