Extjs: Erzwingt das Rendern einer Komponente

8

Ich habe eine benutzerdefinierte Komponente in ExtJs, die ein Formularfeld (GridField) ist. Es zeigt ein Raster als Formularfeld an und funktioniert wie erwartet. Die Beobachtungen sind wie folgt:

  1. Wenn das Formular alleine gerendert wird (zB in einem Fenster oder dem ersten Panel eines Kartenlayouts, zeigt alles gut)

  2. Wenn das Formular nicht das erste Feld in einem Kartenlayout ist oder beim erstmaligen Rendern ausgeblendet wird, wird der Feldname angezeigt und der benötigte Speicherplatz wird belassen, aber das Steuerelement wird nicht angezeigt.

Ich habe eine Inspektion durchgeführt und festgestellt, dass die benutzerdefinierte Komponente tatsächlich gerendert wird, aber die Breite aller HTML-Elemente (divs usw.) 0 war. Sie alle hatten den Stil (Breite: 0). Meine Vermutung liegt darin, dass das Formularfenster zum Zeitpunkt des Renderings nicht sichtbar war.

In Bezug auf die Implementierung der Kontrolle erweitere ich Ext.form.field.Base . In initComponent rufe ich einfach this.on('afterrender', this.initControl) auf, um den benutzerdefinierten Code für das zusätzliche Steuerelement nach dem Rendern auszuführen. Hier ist das input -Feld ausgeblendet und das Gitter wird dort gerendert, wo es sein soll.

Meine Fragen sind 1. Wie erzwinge ich das Steuerelement neu zu rendern, so dass die Breite nicht mehr 0 ist? 2. Wenn die aktuelle Implementierung falsch ist, was ist der richtige Weg, ein Gitter oder eine andere ext-Komponente als Formularfeld zu verwenden?

    
ritcoder 15.03.2014, 10:02
quelle

1 Antwort

2

Haben Sie versucht, die "doLayout" -Methode aufzurufen, um sicherzustellen, dass die Dimensionen erneut korrekt angewendet werden? Das Rendern ist in Extjs nicht üblich, normalerweise macht doLayout den Trick. Wenn dies nicht der Fall ist, könnte Ihre Implementierung selbst etwas bewirken.

    
user3439045 19.03.2014 19:02
quelle

Tags und Links