Как автоматически обновить отдельные вкладки в панели вкладок GWT

0

У меня есть простое приложение, в котором у меня есть Tabpanel с несколькими вкладками, добавленными к нему. Каждая вкладка будет извлекать данные из внешних URL-адресов и отображать данные.

Данные этих внешних URL-адресов постоянно меняются каждые 30 минут, но адрес URL остается таким же.

Поэтому, когда я нажимаю на отдельные вкладки, не обновляя всю страницу, обновленные данные не отображаются на вкладках после изменения исходного содержимого в URL-адресе. Я использую iframe для отображения содержимого внешних URL-адресов на каждой вкладке.

Мой вопрос здесь, как сделать каждую вкладку autorefresh (или) перезагрузить вкладку, щелкнув заголовок вкладки?

Я просмотрел несколько уже опрошенных вопросов о стеке, но не помог полностью.

В настоящее время я использую http meta tags для обновления всего браузера каждые 30 секунд. Но проблема заключается в том, что браузер устанавливает первую вкладку, и пользователю снова нужно щелкнуть по вкладке по своему выбору, и это раздражает.

Теги:
gwt
tabs

3 ответа

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

            }
        } );
  • 0
    Я следовал этому до публикации этого вопроса, но глупой ошибкой на моем конце было сохранение tabPanel.selectTab (0); после addSelectionHandler. Спасибо за помощь. Сейчас работает круто.
1

Не используйте URL. Просто слушайте изменения на вкладках и делайте необходимые

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

Мое предположение об этом будет,

У вас должен быть обработчик кликов для всех вкладок и при щелчке по вкладке в основном обновлять DataProvider вы используете для заполнения данных. Это зависит от того, как вы используете для отображения данных. Необходимо обновить контейнер данных, который необходимо отобразить. Если вы можете опубликовать свой код, кто-то может помочь лучше с более подходящим решением.

Более того, вы можете вызвать selectTab(int index,boolean fireEvents) после интервала вместо обновления браузера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню