2012-10-23 43 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' 
      } 
     ] 
    });