2

有没有办法将模板应用于 ComboBox 的选定值?我正在使用模板来显示 ComboBox 的下拉值,但只要我选择一个,就会显示来自数据存储的纯值。

{
  id:               'requestStatusCombo',
  hiddenName:       'requestStatus',
  tpl:             '<tpl for="."><div class="x-combo-list-item">{statusCode:requestStatus}</div></tpl>',
  fieldLabel:       'Status',
  xtype:             'combo',
  mode:           'local',
  triggerAction:     'all',
  store:             new Ext.data.ArrayStore({
      fields:       ['statusCode'],
      data:       [['unassigned'],['assigned'],['closed']]
  }),
  valueField:       'statusCode',
  displayField: 'statusCode'
}

我想使用我的格式函数requestStatus将其转换statusCodes为区域设置特定状态名称,这适用于下拉列表,但只要我选择某些内容,statusCode就会显示。

那么是否可以为 displayField 分配一个模板,或者对数据存储区进行一些简单的批量修改?也许通过阅读器处理输入?是否有另一个<tpl for="?">关键字可以实现这一点?

我正在寻找一些利用 Ext 库的简单方法。如果唯一的解决方案是预处理数据,我可以自己做。

4

2 回答 2

4

我找到了解决办法!

我更改了我的数据存储,并添加了一个阅读器来使用转换函数预处理状态:

{
  id:               'requestStatusCombo',
  hiddenName:       'requestStatus',
  fieldLabel:       'Status',
  xtype:             'combo',
  mode:           'local',
  triggerAction:     'all',
  store:             new Ext.data.Store({
      data:       [['unassigned'],['assigned'],['closed']],
      reader:       new Ext.data.ArrayReader({},[
          {name: 'statusCode',   mapping: 0},
          {name: 'displayname', mapping: 0, convert: function(statusCode) {
              return Ext.util.Format.requestStatus(statusCode);
          }}
      ])
  }),
  valueField:       'statusCode',
  displayField:   'displayname'
}
于 2010-07-30T08:22:24.870 回答
2

检查生成的 DOM,您会注意到虽然列表元素是 DIV,但字段本身是 html INPUT 元素。您不能在 INPUT 元素中包含 HTML...所以不...这里没有 xtemplate。

这并不意味着它不能通过扩展 Ext.form.ComboBox (或 Ext.Component 可能)来完成

于 2010-07-30T08:04:07.503 回答