Я создал панель формы и визуализирую несколько полей со списком на панели с хранилищем, которое заполняется с помощью обработчика ответа. проблема, если я хочу снова отобразить панель, она отображает поля со списком без хранилища, хотя я реконструирую панель. Я попытался отладить, чтобы выяснить причину, и, что удивительно, для поля со списком Store имеет значение null при вызове - comboBox.setStore (store), он проверяет свойство (isRendered) и находит его истинным и, следовательно, не добавляет хранилище но просто сохраните существующее хранилище, которое все еще равно нулю.
Я видел эту проблему в другом сценарии, где я создал набор сворачиваемых полей, содержащий поле со списком, при минимизации и максимальном увеличении набора полей хранилище исчезает по тем же причинам.
может кто-нибудь, пожалуйста, помогите мне здесь, я полностью поражен здесь, я пробовал разные варианты, но ничего не работает.




Вы пробовали метод doLayout() из FormPanel?
ComboBox.view.setStore () должен помочь.
Если view является частной переменной, просто попробуйте указать ее между параметрами конфигурации Combobox при создании. Если не помогает - можно использовать такой плагин:
view_plugin = {
init: function(o) {
o.setNewStore = function(newStore) {
this.view.setStore(newStore);
};
}
};
и добавьте строку
plugins: view_plugin,
в конфигурацию Combobox.
Затем вы можете вызвать combobox.setNewStore (newStore) позже в коде.
Вам нужно написать:
field = new ComboBox({plugins: view_plugin});
В вашем случае и определите мой код view_pligin где-нибудь раньше. Или вы даже можете встроить его в строку:
field = new ComboBox({plugins: { code of plugin });
Внутри плагина доступны / изменяются все частные свойства и методы.
Вы также можете изменить магазин, используя field.setNewStore(store), в любое время позже.
Спасибо за ваши комментарии, на самом деле я пробовал использовать плагин, но не мог полностью понять, как я получу дескриптор магазина, который не является открытым элементом компонента.
В любом случае я пробовал что-то еще, во время отладки я обнаружил, что, хотя я снова создаю компонент при нажатии кнопки показа, переданный идентификатор такой же (что желательно), но каким-то образом для данного идентификатора уже есть предыдущая ссылка, доступная в Доп. Компоненты.
Отсюда простое решение: Компонент comp = Ext.getCmp (id); если (комп! = ноль) comp.destroy ();
это фактически работало как ссылка, которая заставляла свойство (isRendered () ComboBox возвращать истину, больше не доступно, и, следовательно, я снова могу правильно видеть хранилище.
Надеюсь, это поможет другим, кто сталкивается с подобной проблемой. В любом случае спасибо за ответ.