2012-10-23 42 views
0

我想在tabPanel(对象Ext.tab.Panel)中显示一个网格(EXTJS 4.1的对象Ext.grid.GridPanel),但我遇到问题:网格工程完美地作为一个独立的源代码,面板也可以作为一个独立的源代码。 但是,当我尝试使网格和面板一起工作时,它不起作用。EXT JS 4.1如何在tabPanel中显示网格

网:

var monGridPanelDetailEcriture = new Ext.grid.GridPanel({ 
    id: 'monGridPanelDetailEcriture', 
    frame: true, 
    width: 1100, 
    autoHeight: true, 
    renderTo: 'gridDetailEcriture', 
    store: monStoreDetailEcriture, 
    columns: mesColonnesDetailEcriture 
}); 

的TabPanel:

var tabs = Ext.create('Ext.tab.Panel', { 
    renderTo: document.body, 
    width: 450, 
    activeTab: 0,  // first tab initially active 
    defaults :{ 
     bodyPadding: 10 
    }, 
    items: [{ 
     title: 'Short Text', 
     closable: true 
    },{ 
     title: 'Long Text' 
    }] 
}); 

我网上搜索解决方案,但每一次我发现没有工作: 我想这个解决方案这是在几个解释论坛:

var tabs = Ext.create('Ext.tab.Panel', { 
    renderTo: document.body, 
    width: 450, 
    activeTab: 0,  // first tab initially active 
    defaults :{ 
     bodyPadding: 10 
    }, 
    items: [{ 
     monGridPanelDetailEcriture 
    },{ 
     title: 'Long Text' 
    }] 
}); 

但我有一个Javascript错误indicatin g这不是描述项目的方法。

我也尝试在网格上创建一个新类型的小部件(属性为“别名”),但它不起作用。

有人有解决方案吗?

回答

2

你的第二次尝试几乎在那里,但monGridPanelDetailEcriture已经是一个对象,你不需要在{}中包装它。

所以下面应该工作:

var tabs = Ext.create('Ext.tab.Panel', { 
    renderTo: document.body, 
    width: 450, 
    activeTab: 0,  // first tab initially active 
    defaults :{ 
     bodyPadding: 10 
    }, 
    items: [ 
     monGridPanelDetailEcriture 
    ] 
}); 

编辑:您可能也不想在网格上的renderTo,因为这将关闭此选项卡面板内呈现。 编辑 - 编辑:另外,我认为这可能是更好的做法,在renderTo中使用Ext.getBody(),而不是document.body。似乎更有点Ext'y

+0

非常感谢它完美的作品!并感谢您的建议,我将使用它。 – lilpeach

+0

没问题,很高兴帮助 – dougajmcdonald

0

对于多个选项卡:

var tabs = Ext.create('Ext.tab.Panel', { 

    renderTo: document.body, 
    width: 450, 
    activeTab: 0,  // first tab initially active 
    defaults :{ 
      bodyPadding: 10 
     }, 
    items: [ 
      monGridPanelDetailEcriture, 
      { 
      title:'tab2', 
      html:'I m tab 2' 
      } 
     ] 
    });