Primefaces:在datatable上设置页面
我在primefaces中有一个数据表,我想,当我在其中添加一行时,查看数据表的最后一页。
我的.xhtml页面是:
... ... ...
... function setTabIndexTT(){ tbl1.getPaginator().setPage(#{calculatePageTable.pageTableTemplate}); }
豆:
@ManagedBean @SessionScoped public class CalculatePageTable { private int pageTableTemplate = 0; private int pageTableField = 0; public void setPageTableTemplate() { final DataTable d = (DataTable) FacesContext.getCurrentInstance().getViewRoot() .findComponent("form:templateTable"); pageTableTemplate = d.getPageCount() - 1; } public int getPageTableTemplate() { return pageTableTemplate; } public void setPageTemplateField() { final DataTable d = (DataTable) FacesContext.getCurrentInstance().getViewRoot() .findComponent("detailsTable:webTemplateUpdateTable"); pageTableField = (d.getPageCount() - 1); } public int getPageTableField() { return pageTableField; } }
但是onsccess ajax永远不会调用js函数setTabIndexTT()…
添加行时如何设置数据表的最后一页?
Primefaces版本是3.1.1
在您的托管bean中,您可以尝试以下代码:
public void setPageDataTable() { final DataTable d = (DataTable) FacesContext.getCurrentInstance().getViewRoot() .findComponent("form:templateTable"); int first = 1; if (d.getRowCount() % ROWS_DATATABLE == 0) { first = (d.getRowCount() - ROWS_DATATABLE); } else { first = (d.getRowCount()/ROWS_DATATABLE)*ROWS_DATATABLE; } d.setFirst(first); }
添加新行时调用此方法
如果datatable widgetVar是dataTableWidget,那么使用:
我会在没有任何JavaScript的情况下完成。 Primefaces的数据表有一个first
属性,它是要显示的第一个数据的索引。
...
你的支持豆:
public class CalculatePageTable { private int first = 1; public int getFirst(){ return first; } public void addRow(){ // 1. your stuff for adding the row ... // 2. switch to the row first = getFirstRowOnLastPage(); } private int getFirstRowOnLastPage(){ ... } }
您可以通过使用绑定来避免代码中的显式ID:
XHTML:
豆:
public class CalculatePageTable { private DataTable dataTable; public DataTable getDataTable() { return dataTable; } public void setDataTable(DataTable dataTable) { this.dataTable = dataTable; } /* See Teg's answer */ public void setPageDataTable() { int first = 1; if (dataTable.getRowCount() % ROWS_DATATABLE == 0) { first = (dataTable.getRowCount() - ROWS_DATATABLE); } else { first = (dataTable.getRowCount()/ROWS_DATATABLE)*ROWS_DATATABLE; } dataTable.setFirst(first); } }