Primefaces 3.5 在 dataTable 上引入了多排序。但它有一个分页错误。
每次按下分页器按钮时,在表格初始渲染时设置的排序列(col 的 sortMeta obj)被发送到 load 方法,而不是选定的排序列。如果未设置初始 sortOrder,则发送 null。
有没有解决这个问题?有人知道这是否已在任何精英版本中得到修复?或者是否有解决方法?
需要一些紧急帮助。
谢谢
Primefaces 3.5 在 dataTable 上引入了多排序。但它有一个分页错误。
每次按下分页器按钮时,在表格初始渲染时设置的排序列(col 的 sortMeta obj)被发送到 load 方法,而不是选定的排序列。如果未设置初始 sortOrder,则发送 null。
有没有解决这个问题?有人知道这是否已在任何精英版本中得到修复?或者是否有解决方法?
需要一些紧急帮助。
谢谢
我能够通过在应用程序中进行一些额外的编码来克服这个问题。如果在更高版本中修复了原始错误,则不需要这样做。
我的解决方案
我添加了 2 个 ajax 事件,用于表格上的“排序”和“页面”。我看到在每个“排序”中,表都有正确的多排序元列表,但是在分页调用中,它被初始数据覆盖了。
因此,我在每次排序调用和分页调用时都保存了 bean 中的 multisortmeta 列表,我已经用 bean 中的内容覆盖了表的 multisortmeta 列表。我的 bean 是一个会话 bean,因此保存列表没有问题。
完成此操作后,多重排序正在处理分页。下面是我的代码
查看/xhtml 代码
<p:dataTable id="userDataTable"
value="#{userBean.userModel}" var="usr"
paginator="true" paginatorAlwaysVisible="false" sortMode="multiple"
rowsPerPageTemplate="20,40,60" rows="20"
sortBy="#{userBean.preSortOrder}" lazy="true"
resizableColumns="false" >
<p:ajax event="page" listener="#{userBean.onPage}" ></p:ajax>
<p:ajax event="sort" listener="#{userBean.onSort}" ></p:ajax>
豆码
public void onSort( SortEvent event) {
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
UIComponent tableComp = viewRoot.findComponent("userForm:userDataTable");
DataTable table = ((DataTable)tableComp);
preSortOrder = table.getMultiSortMeta();
}
public void onPage() {
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
UIComponent tableComp = viewRoot.findComponent("userForm:userDataTable");
DataTable table = ((DataTable)tableComp);
table.setMultiSortMeta(preSortOrder);
}
希望这对其他人也有用。