extjs динамически добавлять сетку на вкладку? - PullRequest
1 голос
/ 16 апреля 2011

В моей вкладке extjs у меня есть вкладка.На вкладке я делаю:

this.tab.add(this.someGrid1);

Теперь, основываясь на определенном условии, я хочу сделать:

if (cond ==true)
this.tab.remove(this.someGrid1);
this.tab.add(this.someGrid2);

Возможно ли это?Я пытался без удаления, и это не работает.Ничего не происходит, старый someGrid1 остается.

РЕДАКТИРОВАТЬ: принимая предложения, я изменил код на:

if (cond ==true)
this.tab.remove(this.someGrid1);
this.tab.add(this.someGrid2);
this.tab.doLayout();

else if (cond ==false)
this.tab.remove(this.someGrid2);
this.tab.add(this.someGrid1);
this.tab.doLayout();

Когда страница загружается, cond == true и все работает хорошо.Когда я изменяю cond на false через комбо, someGrid1 загружается нормально.Когда я возвращаюсь к cond ==true, код не выполняется после

this.tab.add(this.someGrid2);
this.tab.doLayout();

, а someGrid2 не отображается.Ошибка такая:

Error: b.getPositionEl().dom is undefined

Ответы [ 3 ]

1 голос
/ 16 апреля 2011

При динамическом добавлении и удалении компонентов во время выполнения вам необходимо убедиться, что Ext запускает повторную визуализацию компонента, чтобы гарантировать, что измененное состояние будет отражено. Я на самом деле не знаю точную структуру вашей панели, но предполагая, что this.tab это Ext.TabPanel, вы должны сделать

this.tab.doLayout();

для повторного рендеринга компонента.

1 голос
/ 16 апреля 2011

Этот код выглядит мне правильно. Вы пробовали отладку и проверку правильности установки this.someGrid1 при вызове метода remove? Легко запутать ваш this прицел в Ext.

Это не должно иметь значения, но вы также можете попробовать добавить true в качестве второго аргумента к remove. Это заставит Ext уничтожить компонент, и все связанные с ним домики исчезнут.

Возможно, опубликуйте дополнительный код, если вы все еще не можете заставить это работать, но я держу пари, что если вы используете Firebug и отлаживаете эту функцию, решение будет очевидным.

0 голосов
/ 29 мая 2013

Дом уничтожен на remove, поэтому вы должны воссоздать div. Вот почему вы получаете сообщение об ошибке dom is undefined.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...