如何将Primefaces dataTable从bean跳到最后一页?

tro*_*ble 3 datatable jquery jsf primefaces jsf-2

我的.xhtml数据库看起来像这样:

<p:dataTable var="category" value="#{beanView.categories}" paginator="true" rows="5" 
 paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
 rowsPerPageTemplate="5,10" id="categoryDT" styleClass="categoryClass"    
 editable="true" lazy="false" rowKey="#{category.id}">
 <!-- columns -->
<f:facet name="footer">
    <p:commandButton id="btnNewCat" 
      oncomplete="jQuery('.categoryClass').find('span.ui-icon-pencil').last().click();" 
    actionListener="#{beanView.onNewCategory}" 
    update="categoryDT" icon="ui-icon-plus" title="New Category" value="New Category" ></p:commandButton>
</f:facet></p:dataTable>
Run Code Online (Sandbox Code Playgroud)

而我的bean beanView:

public void onNewCategory(final ActionEvent actionEvent) {

    try {
        int rowCount = dataTable.getRowCount();
        int rowsPerPage = dataTable.getRows();
        int lastPage = rowCount / rowsPerPage;
        int rowFirst = (lastPage * rowsPerPage);

        if (rowCount >= rowsPerPage) {
            dataTable.setFirst(rowFirst);
            dataTable.setPageLinks(lastPage + 1);
            dataTable.setRowIndex(rowCount - 1);
        } else {
            ....
        }

        ....
     }
 }
Run Code Online (Sandbox Code Playgroud)

但这实际上不起作用!最后一页不会显示!

可以从bean中单击我的数据表的最后一页按钮吗?还是有另一种解决方法!

谢谢你的帮助

Hat*_*mam 7

您可以通过oncompletecommandButton 实现此目的:

<p:commandButton oncomplete="PF('dataTableWV').paginator.setPage(PF('dataTableWV').paginator.cfg.pageCount - 1);"/>
Run Code Online (Sandbox Code Playgroud)

或者从托管bean:

RequestContext.getCurrentInstance().execute("PF('dataTableWV').paginator.setPage(PF('dataTableWV').paginator.cfg.pageCount - 1);");
Run Code Online (Sandbox Code Playgroud)

注意:dataTableWV是dataTable的widgetVar.