Extjs définir en lecture seule pour tous les champs de formulaire à la volée
Je suis d'essayer d'écrire la méthode qui a fixé propriété en lecture seule pour tous les champs du formulaire.
Mon code:
Ext.override(Ext.form.Panel,{
setReadOnlyForAll: function(bReadOnly) {
this.cascade(function(f) {
if (f.isFormField) {
f.setReadOnly(bReadOnly);
}
});
});
Appeler cette méthode de Poste.forme.Panneau:
this.setReadOnlyForAll(false);
Mais cette méthode fonctionne très lentement.Quelqu'un a une idée de comment augmenter la vitesse? Merci!!!!
Vous devez vous connecter pour publier un commentaire.
cascade
vérifie chaque enfant du conteneur actuel (comme unExt.form.Panel
) et cela signifie que vous avez à vérifier si l'enfant est un champ de formulaire ou pas.Ainsi, l'utilisation de
Ext.form.Basic.getFields
méthode pour obtenir tous les champs de formulaire:De plus, je vous suggère d'utiliser
Ext.define
au lieu deExt.override
.Je ressentais encore un 9 secondes de retard pour définir ~90 champs en lecture seule sur un formulaire (avec des formulaires imbriqués) avec Wilk la suggestion (à l'aide de ExtJS 4.1.1 a).
Pour améliorer le présent et de réduire de 9 secondes < 1 seconde, j'ai ajouté des appels à l'Ext.suspendLayouts() et Ext.resumeLayouts() globals autoriser le cadre de lot le composant mises en page.
C'est simple. Il suffit d'ajouter cette configuration dans votre Formulaire: