2013-05-14 34 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);