Группировка строк по двум столбцам - PullRequest
0 голосов
/ 26 сентября 2018

Я пытался сгруппировать строки в таблицу данных, но все это ведет себя странно ...

Я использую primefaces / jsf, и мне нужно сгруппировать строки по ДВУМ полям, поэтому я придумалпростое решение: сортировка по этим двум полям, а затем группировка по первому.Не самая острая идея, но возможно это может сработать.

Когда я приступил к написанию некоторого HTML-кода, я обнаружил, что он работает не так, как ожидалось: используя expandableRowGroups = "true" для данных и помещаястолбцы / столбец в <p:headerRow> приводят к тому, что первый столбец ПОСЛЕ того, как он используется в качестве заголовка ... и я не могу понять, где я что-то путаю ... может быть, сортировка и группировка не так уж и хороши?!

Единственное решение, которое я нашел, - это использовать пустой <p:column> внутри <p:headerRow>, но, опять же, единственный результат - ТОЛЬКО ПЕРВЫЙ столбец после закрывающего тега используется в качестве заголовка..

Короче говоря: мне нужно сгруппировать строки по ДВУМ столбцам ...

ОБНОВЛЕНИЕ: использование ДВУХ фиктивных столбцов внутри вынуждает данные группировать строки, используя ДВАстолбцы после ... что здесь происходит?!

Это дата:

<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>
...