Я пытался сгруппировать строки в таблицу данных, но все это ведет себя странно ...
Я использую 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>