t:dataScroller не работает правильно при обновлении

Я использую t:dataScroller для прокрутки некоторых данных из a t:dataTable, и он работает нормально, за исключением одного: каждый раз, когда действие, вызывающее обновление экрана, запускается, индекс t:dataScroller устанавливается в 1.

Чтобы быть более понятным: когда я нахожусь на второй странице (индекс == 2) и запускается действие обновления экрана, после обновления данные dataTable все еще находятся в индексе 2, но dataScroller показывает, что отображаемая страница первый.

Я использую dataScroller таким образом:

<t:dataScroller for="myDataTable" id="myDataScroller" paginator="true"
    paginatorMaxPages="#{myBean.paginatorMxPgs}" 
    pageCountVar="pgCount" pageIndexVar="#{myBean.curPg}"
    actionListener="#{myBean.pgListener}">

<f:facet name="prv">
    <h:panelGroup rendered="#{myBean.curPg > 1}" />
</f:facet>
<f:facet name="nxt">
    <h:panelGroup rendered="#{myBean.curPg != pgCount}"/>
</f:facet>
</t:dataScroller>

я использую tomahawk20-1.1.11.jar и myfaces-api-2.0.4.jar

1 ответ

Для установки скроллера на первую страницу установите actionlistener на кнопку отправки.

<t:commandButton actionListener="#{IFussBean.resetDataScroller}" 
                   action="#{IFussBean.searchLocation}" 
                   image="images/submit-button.png">    
  </t:commandButton>

Переплет:

если это датируемый

<t:dataTable id="data"
             headerClass=""
             footerClass=""
             rowClasses="text_holder"
             columnClasses="search_img,search_txt"
             var="item"
             value="#{IFussBean.searchVideoList}"
             preserveDataModel="false"
             rows= "6"
             binding="#{IFussBean.iFussData}"
 >

Объявите HtmlDataTable в вашем Бине, определите его метод получения, как показано ниже:

private HtmlDataTable iFussData;

Геттер и сеттер

 public HtmlDataTable getiFussData() {
        return iFussData;
    }
    public void setiFussData(HtmlDataTable iFussData) {
        this.iFussData = iFussData;
    }

Теперь определите метод ActionListener в Bean:

public void resetDataScroller(ActionEvent e) {
       if(iFussData!= null) {
           iFussData.setFirst(0);
       }
}

Ваша страница будет установлена ​​на первую страницу, когда вы будете выполнять новый поиск.

/**********************************************************************************************************************************/ если вы используете <rich:dataGrid> и ваш скроллер <t:dataScroller> затем

 <rich:dataGrid 
            id="data"
            var="item" 
            columns="3" 
            elements="6" 
            width="600px"
            value="#{IFussBean.searchVideoList}"
            binding="#{IFussBean.iFussDataGrid}"
    >

Объявите HtmlDataGrid в Bean:

private HtmlDataGrid iFussDataGrid;

Его геттер и сеттер

public HtmlDataGrid getiFussDataGrid() {
        return iFussDataGrid;
    }



 public void setiFussDataGrid(HtmlDataGrid iFussDataGrid) {
            this.iFussDataGrid = iFussDataGrid;
        }

Теперь определите его слушатель действия в Bean, который будет вызываться при нажатии командной кнопки для поиска:

 public void resetDataScroller(ActionEvent e) {
               if(iFussDataGrid != null) {
                   iFussDataGrid.setFirst(0);
               }
          }

Вызовите ActionListener на командную кнопку

<h:commandButton styleClass="submit-button" actionListener="#{IFussBean.resetDataScroller}" action="#{IFussBean.searchLocation}" image="images/submit-button.png"/>

Это также дает желаемый результат.

Другие вопросы по тегам