Esto requiere unos pocos pasos. El problema es que ComboBox
tiene un campo de entrada debajo, y las entradas no pueden mostrar html. El primer paso es cambiar la plantilla que reemplaza la entrada con div. Por ejemplo:
fieldSubTpl: [
'<div class="{hiddenDataCls}" role="presentation"></div>',
'<div id="{id}" type="{type}" ',
'<tpl if="size">size="{size}" </tpl>',
'<tpl if="tabIdx">tabIndex="{tabIdx}" </tpl>',
'class="{fieldCls} {typeCls}" autocomplete="off"></div>',
'<div id="{cmpId}-triggerWrap" class="{triggerWrapCls}" role="presentation">',
'{triggerEl}',
'<div class="{clearCls}" role="presentation"></div>',
'</div>',
{
compiled: true,
disableFormats: true
}
]
A continuación, cambiar la plantilla que muestra el valor seleccionado:
displayTpl: Ext.create('Ext.XTemplate', [
'<tpl for=".">',
'<img src="http://phpbb3.pl/adm/images/icon_edit.gif" />',
'{[typeof values === "string" ? values : values["title"]]}',
'</tpl>'
])
Otra cosa es crear nueva plantilla de elemento de lista. Por ejemplo:
listConfig: {
getInnerTpl: function() {
return '<div class="search-item">' +
'<h3><img src="http://phpbb3.pl/adm/images/icon_edit.gif" /><span>{[Ext.Date.format(values.lastPost, "M j, Y")]}<br />by {author}</span>{title}</h3>' +
'{excerpt}' +
'</div>';
}
}
Y lo último: debe asegurarse de que el valor esté configurado correctamente en div. Para que usted debe anular setRawValue
método:
setRawValue: function(value) {
var me = this;
value = Ext.value(value, '');
me.rawValue = value;
// Some Field subclasses may not render an inputEl
if (me.inputEl) {
// me.inputEl.dom.value = value;
// use innerHTML
me.inputEl.dom.innerHTML = value;
}
return value;
}
en cuenta que una nueva plantilla no contiene ningún campo input
, por lo que no estará sometido valor. Si necesita utilizar dicho combo con formulario, debe agregar una entrada oculta en algún lugar en fieldSubTpl
y establecer el valor para él en setRawValue
.
muestra de trabajo: http://jsfiddle.net/lolo/8Xs5h/1/
OMG !, es bastante un montón de cosas que hacer, sólo quiero preguntarle cómo puedo gestionar el html consigo desde el servidor, debido a que el displayField está recibiendo un código HTML directamente, no es un texto, entonces si puedes guiarme, ¿cuál es el mejor enfoque en este caso? Gracias. –
Gracias, encontré mi camino a través del código:) ... –
Gracias por el fragmento – A1rPun