Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Динамическое добавление и удаление одной и тойже вкладки в Ext.tab.Panel (https://javascript.ru/forum/extjs/30219-dinamicheskoe-dobavlenie-i-udalenie-odnojj-i-tojjzhe-vkladki-v-ext-tab-panel.html)

potkin 28.07.2012 02:02

Динамическое добавление и удаление одной и тойже вкладки в Ext.tab.Panel
 
Имеется Ext.FormPanel которую и надо динамически добавлять и удалять из Ext.tab.Panel.
var PanelPassport = new Ext.FormPanel({
        title: txtPassport,
        frame: true,
        monitorValid: true,
        defaultType: 'textfield',
        items: [
            {
                xtype: 'textfield', fieldLabel: txtSeries, name: "DirContractorPasSeries", width: 420, allowBlank: false
            },
            {
                xtype: 'textfield', fieldLabel: txtNumber, name: "DirContractorPasNumber", width: 420, allowBlank: false
            },
            {
                xtype: 'textfield', fieldLabel: txtPinCode, name: "DirContractorPasPinCode", width: 420, allowBlank: false
            },
            {
                xtype: 'textfield', fieldLabel: txtIssued, name: "DirContractorPasIssued", width: 420, allowBlank: false
            },
            {
                xtype: 'datefield', format: "d.m.y", maxValue: new Date(), fieldLabel: txtDate, name: 'DirContractorPasDate', allowBlank: false
            }
        ]
     });

Ну и сам Ext.tab.Panel, в него и будет добавляться PanelPassport
var DirContractorTabPanel = new Ext.create("Ext.tab.Panel", {
        region: "center",
        items: [PanelGeneral, PanelGridBankAccount, PanelPassport],
        bodyStyle: 'background-color: transparent !important'
    });


Есть комбоБокс.
При выборе срабатывает событие:
listeners: {
  select: {
    fn: function (combo, value) {
      if (combo.getValue() == 1) {
        DirContractorTabPanel.remove(PanelPassport);
      }
      else {
        DirContractorTabPanel.add(PanelPassport);
      }
...


Ну так в чём ошибка.
Закладку добавили - всё работает !!!
Поменяли тип контрагента - закладка удалилась - работает !!!
И, опять, поменяли тип контрагента - закладка НЕ добавилась или добавилась но без текстовых полей (с гюками) !!!

Может кто-то и свежим взглядом глянет на мою писанину ... и найдёт ошибочку )))

potkin 28.07.2012 12:44

Решил задачку так:
function fnPanelPassportAdd() {
        var PanelPassport = new Ext.FormPanel({
            title: txtPassport,
            id: "PanelPassport",
            frame: true,
            monitorValid: true,
            defaultType: 'textfield',
            items: [
                {
                    xtype: 'textfield', fieldLabel: txtSeries, name: "DirContractorPasSeries", width: 420, allowBlank: false
                },
                {
                    xtype: 'textfield', fieldLabel: txtNumber, name: "DirContractorPasNumber", width: 420, allowBlank: false
                },
                {
                    xtype: 'textfield', fieldLabel: txtPinCode, name: "DirContractorPasPinCode", width: 420, allowBlank: false
                },
                {
                    xtype: 'textfield', fieldLabel: txtIssued, name: "DirContractorPasIssued", width: 420, allowBlank: false
                },
                {
                    xtype: 'datefield', format: "d.m.y", maxValue: new Date(), fieldLabel: txtDate, name: 'DirContractorPasDate', allowBlank: false
                }
            ]
        });
        DirContractorTabPanel.add(PanelPassport);
    }
    function fnPanelPassportRemove() {
        var tab = Ext.getCmp("PanelPassport"); DirContractorTabPanel.remove(tab, true);
    }

potkin 29.07.2012 16:47

Забыл показать кусок кода:
listeners: {
  select: {
    fn: function (combo, value) {
      if (combo.getValue() == 1) {
        fnPanelPassportRemove();
      }
      else {
        fnPanelPassportAdd();
      }
...


Часовой пояс GMT +3, время: 16:29.