如何自动刷新GWT选项卡面板中的各个选项卡

时间:2013-12-19 04:28:07

标签: javascript jquery html gwt tabs

我有一个简单的应用程序,我有一个Tabpanel,其中添加了多个标签。每个选项卡都将从外部URL获取数据并显示数据。

这些外部网址中的数据每30分钟不断变化,但网址仍然相同。

因此,当我单击单个选项卡而不刷新整个页面时,在URL中的原始内容更改后,在选项卡中看不到刷新的数据。我正在使用iframe在每个标签中显示外部网址的内容。

我的问题是,如何在单击标题页时使每个标签自动刷新(或)重新加载标签?

我已经完成了几个已发布的stackoverflow问题,但没有完全帮助。

目前我正在使用http元标记每30秒刷新整个浏览器。但问题是,浏览器设置为第一个标签,用户再次必须点击他选择的标签,这会让人烦恼。

3 个答案:

答案 0 :(得分:1)

不要使用网址。只需听取标签上的更改并执行必要的

yourTabPanel.addSelectionHandler(new SelectionHandler<Integer>() {
  @Override
  public void onSelection(SelectionEvent<Integer> event) {
    if (event.getSelectedItem() == 1) {
      // do something here // get data for tab1
    }
  }
});

答案 1 :(得分:1)

您可以向选项卡面板添加选择处理程序。并检查事件中选定的标签项。然后再次将URL设置为相关帧。

示例

// Create an empty tab panel
        TabPanel tabPanel = new TabPanel();

        // create contents for tabs of tabpanel
        final Frame cotent1 = new Frame( "http://www.youtube.com/embed/j6cxZp4ii6c?autoplay=true" );
        final Frame cotent2 = new Frame( "http://www.youtube.com/embed/j6cxZp4ii6c?autoplay=true" );

        // create titles for tabs
        String tab1Title = "TAB 1";
        String tab2Title = "TAB 2";

        // create tabs
        tabPanel.add( cotent1, tab1Title );
        tabPanel.add( cotent2, tab2Title );

        // select first tab
        tabPanel.selectTab( 0 );

        // set width if tabpanel
        tabPanel.setWidth( "400" );

        tabPanel.addSelectionHandler( new SelectionHandler<Integer>()
        {
            @Override
            public void onSelection( SelectionEvent<Integer> event )
            {
                           if(event.getSelectedItem() == 0)
                           {
                              cotent1.setUrl( "http://www.youtube.com/embed/j6cxZp4ii6c?autoplay=true" );
                            }
                           // likewise set the urls to all the content

            }
        } );

答案 2 :(得分:0)

我对此的猜测是,

您必须拥有所有选项卡的点击处理程序,并且单击该选项卡基本上会刷新您用于填充数据的DataProvider。这取决于您使用何种方式显示数据。 您需要刷新需要显示的数据容器。如果您可以发布代码,那么使用更合适的解决方案可能会有所帮助。

您可以在一段时间后调用selectTab(int index,boolean fireEvents)而不是刷新浏览器。