Повторный рендеринг магазина combox в Gwt-Ext

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

Я видел эту проблему в другом сценарии, где я создал набор сворачиваемых полей, содержащий поле со списком, при минимизации и максимальном увеличении набора полей хранилище исчезает по тем же причинам.

может кто-нибудь, пожалуйста, помогите мне здесь, я полностью поражен здесь, я пробовал разные варианты, но ничего не работает.

JS - События опций формы
JS - События опций формы
В продолжение предыдущей статьи CSS - стили, связанные с вводом формы , в этой статье мы будем использовать JS для взаимодействия с формами, на этот...
CSS - Стили, связанные с вводом формы
CSS - Стили, связанные с вводом формы
Общими стилями ввода для форм являются Input (включая Text, Radio, checkbox), Select и Textarea, из которых Input относительно прост, поэтому в этой...
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Наличие на корпоративном сайте форм заявлений о приеме на работу, или "трудовых анкет", экономит время и деньги как для соискателей, так и для...
4
0
4 307
4

Ответы 4

Вы пробовали метод 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 возвращать истину, больше не доступно, и, следовательно, я снова могу правильно видеть хранилище.

Надеюсь, это поможет другим, кто сталкивается с подобной проблемой. В любом случае спасибо за ответ.

Другие вопросы по теме