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"/>
Это также дает желаемый результат.