我试图用两列对数据表进行排序,但是失败了。
我正在使用primefaces7,我试图用两列对数据表进行排序,但是失败了。
我在primefaces展示柜上遵循以下示例:https://www.primefaces.org/showcase/ui/data/datatable/sort.xhtml,将sortMode的值设置为multiple,还设置了两列的sortby属性。
应用程序启动后,每次单击两个排序列中的任何一个时,后端列表SortMeta的大小为1,那么我只能使用两个排序列之一对数据表进行排序,而不能同时对两个排序列进行排序。 / p>
xhtml代码:
<p:dataTable var="hosp"
binding = "#{hospitalController.sortTable}"
value="#{hospitalController.hospitalLazyModel}"
paginator="true"
rows="7"
paginatorPosition="bottom"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
currentPageReportTemplate="{currentPage} of {totalPages} pages, {totalRecords} records"
rowsPerPageTemplate="7,15,30"
lazy="true"
id="sortTable"
widgetVar="sortTable"
sortMode="multiple"
>
<p:column headerText="Hospital Code" sortBy="#{hosp.hospitalId}">
<h:outputText value="#{hosp.hospitalId}" />
</p:column>
<p:column headerText="HospitalName" sortBy="#{hosp.hospitalName}">
<h:outputText value="#{hosp.hospitalName}" />
</p:column>
后端代码:
public List<StdHospital> load(int first, int pageSize, List<SortMeta> multiSortMeta, Map<String, Object> filters) {
// here it always prints 1
log.info("multiSortMeta size -> " + multiSortMeta.size());
我的意思是我只能通过List SortMeta获得两列的一种排序信息,但是,由于后端的SortMeta类型是一个List,为什么它不包含两列的排序信息,例如sort订单等等?
如何用两列对数据表进行排序?
答案 0 :(得分:2)
通过将
sortMode
设置为multiple
可以启用多种排序。在 在此模式下,在启用键的同时点击排序列可添加排序 列到订单组。
在Windows上,这意味着在单击要排序的列时,按住[ctrl]-键。 在不同的操作系统,键盘布局和输入方法(例如触摸设备)上,这可能会有所不同。
随时可以在其他OS / Input变体上进行测试并将其编辑为答案。