Extjs gesetzt nur Lesen für alle Felder auf dem Formular on-the-fly
Ich bin versucht zu schreiben-Methode, die set-readOnly-Eigenschaft für alle Felder auf dem Formular.
Mein code:
Ext.override(Ext.form.Panel,{
setReadOnlyForAll: function(bReadOnly) {
this.cascade(function(f) {
if (f.isFormField) {
f.setReadOnly(bReadOnly);
}
});
});
Aufrufen dieser Methode von Ext.form.Panel:
this.setReadOnlyForAll(false);
Aber diese Methode funktioniert so langsam.Haben jemand eine Idee, wie man die Geschwindigkeit erhöhen? Danke!!!
InformationsquelleAutor vedmed | 2012-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
cascade
prüft jedes Kind des aktuellen container (z.B. eineExt.form.Panel
) und das bedeutet, Sie haben zu prüfen, ob das aktuelle Kind ist ein Formular-Feld oder nicht.Also, nutzen Sie
Ext.form.Basic.getFields
Methode, um jede form-Felder:Weiter, ich schlage vor, Sie verwenden
Ext.define
stattExt.override
.InformationsquelleAutor Wilk
War ich noch mit 9 Sekunden Verzögerung einstellen ~90 Felder, die als readOnly auf einem Formular (mit verschachtelten Formen) mit Wilk ' s Vorschlag (mit ExtJS 4.1.1 a).
Zu verbessern und so weiter und reduzieren von 9 Sekunden bis < 1 Sekunde fügte ich hinzu Anrufe an Ext.suspendLayouts() und Ext.resumeLayouts (), globals zu ermöglichen, den Rahmen, um die batch-Komponenten-layouts.
InformationsquelleAutor JamieB
Ist es einfach. Fügen Sie einfach diese Konfiguration in Ihrer Form:
InformationsquelleAutor Luca Lobefaro