2017-09-12 71 views
0

我正在嘗試創建一個屏幕,其中有一個Panel。主Panel有另一個Panel和這個Panel有一個Grid它有四個HBoxes,並且每個HBox最後有一個Button無法在運行時創建用戶界面控件

onInit:function(){ 

     oMainPanel.removeAllContent(); 
     var oHbox1 = new sap.m.HBox(jQuery.sap.uid()); 
     var oHbox2 = new sap.m.HBox(jQuery.sap.uid()); 
     var oHbox3 = new sap.m.HBox(jQuery.sap.uid()); 
     var oHbox4 = new sap.m.HBox(jQuery.sap.uid()); 



     var oPanel ; 
     var oGrid; 
     for (var i = 0; i < 4; i++) { 
       oGrid = new sap.ui.layout.Grid(jQuery.sap.uid(),{ 
       hSpacing: 1, 
       vSpacing: 1, 
       content: [oHbox1,oHbox2,oHbox3,oHbox4] 
      }); 

      oPanel = new sap.m.Panel(jQuery.sap.uid(),{ 

       headerText: "Some Text", 
       expandable: true, 
       expanded: true, 
       width:"100%", 
       content:[oGrid] 

      }); 
      jQuery.sap.delayedCall(100, this, function() { 

     }); 
     oMainPanel.addContent(oPanel); 
     } 

我可以看到在每個HBox的內容,但只在最後Panel。我認爲這些重疊。如何在所有​​中顯示所有HBoxes的內容?

回答

2

您正在嘗試使用不同GridsHBox的相同實例作爲content。您需要爲每個Panel創建一個新實例。

嘗試做這樣的事情:

oGrid = new sap.ui.layout.Grid(jQuery.sap.uid(),{ 
       hSpacing: 1, 
       vSpacing: 1, 
       content: [new sap.m.HBox(), new sap.m.HBox(), 
          new sap.m.HBox(), new sap.m.HBox()] 

或初始化循環

+0

你好胡安, 首先,謝謝。隨着你的解決方案,我的問題已被解決,但只有如果我不使用jQuery.sap.delayedCall。其實我在Hbox而不是按鈕上繪製圖表。所以如果我不給出延遲,我不能渲染圖表,如果我給出延遲,圖表正在爲最後一行創建。 –

+0

我通過使用forEach而不是for循環來解決此問題。 –

0

我通過使用foreach而不是爲循環解決了這個問題裏面的變量(oHbox1oHbox2等)。