Mam układ formularza z elementami TextField i jednym elementem HtmlEditor. Niektóre elementy TextField są "chowane", to znaczy mogą być ukryte lub pokazane. Po ukryciu/wyświetleniu elementów układ łamania instancji HtmlEditor - pojawia się pusta przestrzeń lub element nie kończy się na granicy okna.ExtJS: dynamicznie dopasowuje układ po dodaniu/usunięciu pól formularza
Czy możliwe jest poinformowanie instancji HtmlEditor o użyciu pozostałego wolnego miejsca? Nawet w przypadku, gdy niektóre elementy są ukryte/pokazane.
Próbowałem użyć właściwości anchor
, ale działa dobrze, dopóki jakiś element nie zostanie usunięty z układu.
Updated Oto przykładowy kod:
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, kliknij przycisk na pasku narzędzi "click", jedno pole powinno zniknąć, a następnie spojrzeć na pustej przestrzeni poniżej HTMLEditor.
To naprawdę nie pomaga. Kiedy jakiś element jest po prostu ukryty, pojawia się puste miejsce poniżej HtmlEditor (lub textarea). –
Mój komentarz zakłada, że (A) twoje widżety są skonfigurowane z odpowiednim zakotwiczeniem i (B) wszystkie zagnieżdżone kontenery mają skonfigurowany odpowiedni układ. Jeśli masz inne rzeczy skonfigurowane niepoprawnie, to doLayout() nie pomoże, ale ponieważ nie napisałeś żadnego kodu, nie jest możliwe określenie, jaki może być problem. –
Jeszcze jedno - zakładając, że masz skomplikowany układ aplikacji, aby rozwiązać ten problem, powinieneś zakodować prosty przypadek testowy z niezagnieżdżonym formularzem FormPanel i tylko tyle pól i kodu układu, aby przetestować twój scenariusz. Gdy już to zrobisz, łatwiej będzie Ci się dowiedzieć, co możesz zmienić w kodzie aplikacji. Twój przypadek użycia jest dość osiągalny, ponieważ robiłem dokładnie to samo wcześniej. –