Fondamentalement, j'ai une fenêtre contenant un formPanel avec des éléments, qui est partagée à plusieurs endroits. Cela signifie que les éléments de formPanel peuvent varier légèrement. (le type de contrôles).ExtJS - Éléments FormPanel clear & dynamic reload
J'ai réussi à effacer dynamiquement et ajouter des boutons personnalisés pour la situation appropriée sur la fenêtre.
Mais je rencontre un léger problème avec les éléments de formPanel.
Creuser dans à la source, je trouve que, dans la méthode Ext.Container InitComponent il y a ce petit morceau de code:
var items = this.items;
if(items){
delete this.items;
if(Ext.isArray(items)){
this.add.apply(this, items);
}else{
this.add(items);
}
}
Cela semble être semblable à ce que je suis en train de réaliser. Suppression de tous les éléments en cours et appeler la méthode formPanel.add serait une nouvelle fois invoquer ce code:
if(!this.items){
this.initItems();
}
Tout cela est bien jusqu'ici. Et la charge initiale de la forme fonctionne parfaitement. Bien que, lorsque je cache la fenêtre, et que je l'ouvre à nouveau, le clear/reload des éléments fonctionne parfaitement sur mon composant, mais les childNodes/items précédents sont toujours présents dans dom.children et dom.innerHTML.
Ainsi mon formPanel affiche maintenant deux ou plusieurs ensembles de contrôles qui n'ont aucune valeur, et les contrôles nouvellement chargés en bas avec les valeurs réelles.
J'appelle formPanel.doLayout() après l'effacement/l'ajout d'éléments.
J'ai également essayé d'appeler la méthode formPanel.remove sur chaque élément actuellement sur le formPanel, mais je me retrouve toujours avec l'affichage des doublons, et la mise en page ne semble pas ancrer/ancrer correctement, car je me retrouve avec une barre de défilement horizontale sous chaque élément. Que puis-je faire d'autre pour effacer/recharger les fichiers dom.children et dom.innerHTML?
Toute aide serait grandement appréciée. Je suis en train d'utiliser ExtJS 2.1 si ça change quelque chose. J'utilise ExtJS 2.1.
Salut Steve. Ce n'est pas le rafraîchissement des contrôles.J'ai une fenêtre avec un panneau de formulaire, qui n'est pas disposé quand je le ferme, il devient seulement caché. Mais quand je le rouvre, je veux effacer tous les éléments sur le panneau de formulaire, et ajouter un ensemble différent de contrôles. C'est un peu un mode readOnly et editable, seulement, les contrôles utilisés dans les modes readOnly et editable sont des types de contrôles totalement différents. Et je n'ai pas voulu déclarer 2 fenêtres avec leurs propres panneaux de forme si la seule chose qui change est les éléments dessus. Les changements apportés au panneau de formulaire ne sont pas poussés à la duplication. – Jabezz
Jabezz, comme un coup très rapide, avez-vous essayé de fermer la fenêtre au lieu de le cacher? Fermer une fenêtre la détruit avec les enfants. Dans tous les cas, un extrait de votre code source serait utile ici. – mxgrn