2011-07-21 71 views
3

我想根據ID刪除一個RootPanel元素的全部內容。 RootPanel返回正確,我可以在調試器中看到它的內容。問題是,我刪除它,我嘗試了以下幾件事:GWT:刪除RootPanel內容(編號)

   RootPanel rp = RootPanel.get("LayoutID2"); 
      if (rp != null) { 
       for (Widget widget : rp) { 
        rp.remove(widget); 
       } 
      } 

任何想法,我錯過了什麼,或者是有其他的功能?

最好的問候, 斯特凡

回答

5

所有的RootPanel可能不是控件的內容。例如,如果您在主頁中放置了以下html:

<div id="LayoutID2"> 
    Here goes the dynamic content 
</div> 

文本「Here goes the dynamic content」將不會顯示爲小部件。

順便說一句,刪除所有的小部件可以通過呼籲rp.clear()實現。

2

上面的答案是不正確的:D!

RootPanel.clear()從面板中刪除小部件。我想你想要 清除現有的HTML元素。 RootPanel.get()在1.0.21中自動執行 ,但在1.1中刪除了此功能。我用的是 下面的效用函數來實現:

public void clear(Element parent) 
{ 
     Element firstChild; 
     while((firstChild = DOM.getFirstChild(parent)) != null) 
     { 
       DOM.removeChild(parent, firstChild); 
     } 
} 
1

接受的答案是在正確所有在RootPanel的內容可能不小部件。 rp.clear()將刪除所有的小部件也是正確的。然而,如果你想做第二個答案所建議的並完全清除面板,那麼這裏就不會有一個非常簡單的方法。使用:

rp.clear(true); 

可選的布爾參數將清除RootPanel中的DOM元素以及Widgets。這比第二個答案簡單得多。