2013-05-14 38 views
0

我有一些頁面,應該有複選框動態計,並輸入依賴於從數據庫GWT裝載元素動態頁面加載

現在接收到的數據我這樣做:

  1. 化妝上組分負載RPC調用(用於輸入獲取數據)
  2. onSuccess動態地添加在表格上輸入

結果:形式顯示沒有內容(因爲這讓調用異步),只調整大小後,它顯示的內容正確 (也許我可以觸發事件resizeredraw與我自己,我不知道怎麼..)

問題:我是GWT新手,做這個任務的最好方法是什麼? (現在我使用GWT-EXT http://gwt-ext.com/,但我認爲這是不管)

更新:刷新面板有可能調用doLayout();

回答

2

我不熟悉GWT-EXT但在「香草」 GWT你有兩種選擇:

  1. onSuccess方法刷新你的widget(應該顯示的結果)
  2. 繼續進行直到返回結果爲止的其餘代碼。

爲了更精確一點,我需要更多的代碼。

+0

它給很多代碼,我有佈局的TabPanel,並有接取到面板的http:// GWT-EXT包含我的表單的.com/docs/2.0.4/com/gwtext/client/widgets/Panel.html,你如何在香草中刷新你的小部件;以及如何使繼續,你阻止所有的應用程序while(!result){}? – Sergey 2013-05-14 13:50:13

+0

刷新通常只能在特定的小部件(如表或列表)上執行。所以如果你的表單沒有刷新/重繪方法,它不應該需要一個。 – Ben 2013-05-14 14:04:19

+0

要延遲其他代碼,可以將它放入新方法中,並在onSuccess方法中調用它。新方法可能包括創建該表單及其與面板的附件。 – Ben 2013-05-14 14:05:53

1

我有一個類似的挑戰,我的部件的內容加載了幾秒鐘。我顯示「」加載中,請稍候......「」標籤,直到控件加載:

final VerticalPanel mainPanel = new VerticalPanel(); 

    initWidget(mainPanel); 
    mainPanel.add(new Label("Loading, please wait ...")); 
    mainPanel.add(new myCustomWidget()); // this constructor uses RPC to get content 

    Timer t = new Timer() 
    { 
     public void run() 
     { 
      if (!mainPanel.getWidget(1).isVisible()) { 
       // do nothing 
      } else { 
       // remove label "Loading, please wait ..." 
       mainPanel.remove(0); 
       // stop timer 
       cancel(); 
      } 
     } 
    }; 
    // repeat every 30 miliseconds until myCustomWidget is visible 
    t.scheduleRepeating(30);