我的数据表中大约有1000项。如果我转到第5页,然后导航到该页面上的其他内容,则需要为数据表试图收集的数据设置当前页面,但不会显示任何行,因为它似乎“记住”了最后一页是在。
我想将当前页面设置为托管bean的第一页-有没有办法做到这一点?
我已经看到您可以在onclick中添加这样的事件,但是我认为我唯一的选择是在我的lazyloader中添加该方法,例如-确保在少于要显示的pagesize项:
myWidget.getPaginator().setPage(0);
谢谢, 迈克
答案 0 :(得分:-1)
如果仅是要将Primefaces Datatable从ManagedBean代码切换到首页,则可以使用DataTable.setFirst()
来实现:
托管豆示例:
import javax.enterprise.context.RequestScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import org.primefaces.component.datatable.DataTable;
@Named
@RequestScoped
public class MyBean {
private DataTable findDataTable() {
FacesContext ctx = FacesContext.getCurrentInstance();
// find the DataTable component from viewRoot
DataTable dataTable = (DataTable) ctx.getViewRoot().findComponent("myForm:myDataTable");
return dataTable;
}
public void gotoFirstPage() {
DataTable dataTable = findDataTable();
// go to first page and initiate data reload.
dataTable.setFirst(0);
dataTable.loadLazyData();
}
public List<String> getEntries() {
// ...
}
}
XHTML中的示例表单:
<h:form id="myForm">
<p:dataTable id="myDataTable" value="#{myBean.entries}" var="entry"
rows="10" paginator="true">
<p:column>#{entry}</p:column>
</p:dataTable>
<p:commandButton value="go to first page!"
action="#{myBean.gotoFirstPage()}" process="@this" update="@form"/>
</h:form>
按下按钮将使dataTable跳转到第一页。当表再次更新/呈现时,它也是如此可见。