我试图对数据表中的行进行分组,但整个过程都发生了奇怪的事情...
我正在使用primefaces / jsf,我需要按两个字段对行进行分组,所以我想出了一个简单的解决方案:按这两个字段进行排序,然后按第一个字段进行分组。不是最聪明的主意,但也许它可能有效。
当我继续放下一些HTML时,我发现它无法按预期工作:在数据表上使用expandableRowGroups =“ true”并将列/列放入<p:headerRow>
中,导致使用第一列之后作为标题...而我无法真正弄清混乱的地方...也许排序和分组不是那么出色吗?!
我发现的唯一解决方案是在<p:column>
内使用一个空的<p:headerRow>
,但是,唯一的结果是,仅将结束标记后的FIRST列用作标题...
长话短说:我需要按两列对行进行分组...
更新:在...内部发生变化之后,内部使用两个虚拟列会强制数据表使用两个列对行进行分组?!
这是数据表:
<p:dataTable id="tbl" var="user"
value="#{userBean.userList}"
widgetVar="tbl" filterEvent="enter"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {Exporters}"
paginator="true" rows="20"
emptyMessage="#{msg['userMsg.noUser']}" reflow="true"
sortBy="CONCAT(#{user.surname}, '', #{user.name})"
sortOrder="ASCENDING" expandableRowGroups="true"
rowIndexVar="rowIndex"
style="margin-bottom:20px;margin-top:20px;display:block;"
rowStyleClass="#{(rowIndex mod 2) eq 0 ? 'first-row' : 'second-row-light'}"
editable="true">
<p:headerRow>
<p:column width="8%" class="centered">
<h:outputText value="-" />
</p:column>
</p:headerRow>
<p:column width="8%" filterBy="#{user.surname}"
headerText="#{msg['userMsg.surname']}"
sortBy="#{user.surname}" class="centered">
<h:outputText value="#{user.surname}" />
</p:column>
<p:column width="8%" filterBy="#{user.name}"
headerText="#{msg['userMsg.name']}"
sortBy="#{user.name}" class="centered">
<h:outputText value="#{user.name}" />
</p:column>
<p:column width="8%" filterBy="#{user.id}"
headerText="#{msg['userMsg.id']}"
sortBy="#{user.id}" class="centered">
<h:outputText value="#{user.id}" />
</p:column>
</p:dataTable>