有没有办法将模板应用于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
转换为语言环境特定状态名称,这适用于下拉列表,但只要我选择了某些内容,{{{ 1}}显示。
那么可以将模板分配给displayField,或者可以在数据存储上进行一些简单的批量修改吗?通过阅读器处理输入可能吗?还有另一个statusCode
关键字可以实现这一目标吗?
我正在寻找一些利用Ext库的简单方法。如果唯一的解决方案是预处理数据,我自己就能做到这一点。
答案 0 :(得分:3)
我找到了解决方案!
我更改了我的数据存储区,并添加了一个阅读器,使用转换函数预处理状态:
{
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'
}
答案 1 :(得分:2)
Examinig生成的DOM您将注意到,虽然列表元素是DIV,但字段本身是html INPUT元素。你不能在INPUT元素中包含HTML ...所以不...这里没有xtemplate。
这并不意味着无法通过扩展Ext.form.ComboBox(或者可能是Ext.Component)来完成