Ho il layout del modulo con alcuni elementi TextField e un elemento HtmlEditor. Alcuni elementi di TextField sono "nascondibili", ovvero potrebbero essere nascosti o mostrati. Dopo aver nascosto/mostrato gli elementi HtmlEditor interrompe il layout - appare spazio vuoto o l'elemento non finisce sul bordo della finestra.ExtJS: layout dinamicamente corretto dopo l'aggiunta/rimozione di alcuni campi modulo
È possibile dire all'istanza di HtmlEditor di utilizzare tutto lo spazio rimanente disponibile? Anche nel caso in cui alcuni elementi siano nascosti/mostrati.
Ho provato a usare la proprietà anchor
, ma funziona bene fino a quando alcuni elementi non vengono rimossi dal layout.
Aggiornato Ecco un esempio di codice:
var htmlEditor = new Ext.form.HtmlEditor({
anchor: '100% -54',
hideLabel: true
});
var fp = new Ext.form.FormPanel({
items: [{xtype: 'textfield', fieldLabel: 'zzz', mode: 'local'},
{xtype: 'textfield', fieldLabel: 'nnn', id: 'id-one', mode: 'local'},
htmlEditor]
});
var w = new Ext.Window({layout: 'fit',
height: 400, width: 600,
tbar: [{text: 'click',
handler: function() {
// hide element
Ext.getCmp('id-one').getEl().up('.x-form-item').setDisplayed(false);
w.doLayout();
}
}],
items: fp
});
w.show();
Execute, fare clic sul pulsante della barra degli strumenti "click", un campo dovrebbe sparire, poi guardare spazio vuoto sotto HTMLEditor.
In realtà non aiuta. Quando qualche elemento è appena nascosto, appare uno spazio vuoto sotto HtmlEditor (o textarea). –
Il mio commento presuppone che (A) i tuoi widget siano impostati con l'ancoraggio appropriato e (B) tutti i contenitori nidificati abbiano configurato un layout appropriato. Se hai altre cose configurate in modo errato, doLayout() non sarà di aiuto, ma dal momento che non hai pubblicato alcun codice è impossibile dire quale potrebbe essere il problema. –
Un'altra cosa: se si dispone di un layout di app complicato, per risolvere questo problema è necessario codificare un semplice caso di test con un FormPanel non nidificato e solo un numero sufficiente di campi e codice di layout per testare lo scenario. Una volta che hai funzionato, sarà più facile capire cosa potrebbe essere necessario modificare nel codice dell'app. Il tuo caso d'uso è abbastanza realizzabile dato che ho fatto esattamente la stessa cosa prima. –