forms - Reconstrucción de la tienda de combox en Gwt-Ext
combobox (4)
ComboBox.view.setStore () debería ayudar.
Si view es una variable privada, solo intenta mencionarla entre los parámetros de configuración de Combobox al crear. Si no ayuda, puede usar un plugin como ese:
view_plugin = {
init: function(o) {
o.setNewStore = function(newStore) {
this.view.setStore(newStore);
};
}
};
y agrega una línea de
plugins: view_plugin,
a la configuración de Combobox.
Luego puede llamar a combobox.setNewStore (newStore) más adelante en el código.
He creado un panel de formulario, y estoy representando un par de cuadros combinados en el panel con una tienda que se rellena a través de un controlador de respuesta. El problema es que si quiero volver a representar el panel, se renderizarán los cuadros combinados sin la tienda, aunque estoy reconstruyendo el panel. intenté depurar para descubrir la causa y, sorprendentemente, aunque para el cuadro combinado, la Tienda no tiene nombre en las llamadas: comboBox.setStore (tienda) comprueba la propiedad (isRendered) y la encuentra verdadera y, por lo tanto, no agrega la tienda pero solo mantén la tienda existente que aún es nula.
He visto este problema en otra escenaio donde había creado un conjunto de campo plegable que contiene el Combobox. Al minimizar y maximizar el fieldset, la tienda desaparece por las mismas razones.
alguien puede por favor ayudarme aquí, estoy completamente impresionado aquí probé varias opciones pero nada funciona.
Gracias por sus comentarios, en realidad probé el enfoque del complemento pero no pude entenderlo completamente en cuanto a cómo obtendré el identificador de la tienda que no es un elemento expuesto del componente.
De todos modos intenté con otra cosa, mientras depuraba descubrí que aunque estoy creando el componente nuevamente al hacer clic en el botón mostrar, el ID pasado es el mismo (que se desea) pero de alguna manera para el ID dado ya existe la referencia previa disponible en el Ext.Components.
Por lo tanto, una solución fácil es la siguiente: Component comp = Ext.getCmp (id); if (comp! = null) comp.destroy ();
Esto en realidad funcionó como la referencia que causaba que la propiedad (isRendered () de ComboBox para devolver true no esté más disponible y, por lo tanto, puedo volver a ver la tienda correctamente.
Espero que esto ayude a otros que están enfrentando un problema similar. Gracias de todos modos por responder.
¿Has probado el método doLayout()
de FormPanel
?
Necesitas escribir:
field = new ComboBox({plugins: view_plugin});
En su caso, defina mi código de view_pligin en algún lugar anterior. O incluso puedes incorporarlo en línea:
field = new ComboBox({plugins: { code of plugin });
Complemento interno: todas las propiedades y métodos privados son accesibles / modificables.
También puede cambiar de tienda usando field.setNewStore(store)
en cualquier momento posterior.