使用两列进行行分组

时间:2018-09-26 09:02:21

标签: html jsf primefaces datatable

我试图对数据表中的行进行分组,但整个过程都发生了奇怪的事情...

我正在使用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>

0 个答案:

没有答案