2016-07-13 2 views
0

У меня есть форма, которая содержит несколько полей, которые вводят данные от пользователя. Этот ввод затем используется для создания dataTable, который заполняется через Hibernate с информацией из базы данных, в соответствии с параметрами/полями, выбранными пользователем в начальной форме.Создать выпадающее меню в h: dataTable для одной конкретной строки

Мне нужно как-то создать раскрывающееся меню для конкретной записи, на которую нажимается, а затем загрузить эту запись в определенном формате файла (у меня уже есть аналогичный метод для этого, сделанный кем-то другим).

Вот как мой DataTable выглядит следующим образом:

<h:form id="form2"> 
<t:dataTable binding="#{table}" rendered="#{searchArhivaUIBean.renderTable}" value="#{searchArhivaUIBean.nonEdiAbstractList}" 
var="dataItem" border="0" cellspacing="2" width="100%" id="tdtbl" 
    headerClass="tableHeader" rowClasses="rowOdd,rowEven" columnClasses="Column"> 
<t:column> 
    <!-- display currently selected row number --> 
    <f:facet name="header"> 
     <t:outputText value="Nr"/> 
    </f:facet> 
    <t:outputText value="#{table.rowIndex + 1}"/> 
</t:column> 
<t:column> 
    <f:facet name="header"> 
    <t:outputText value="Data Mesaj"/> 
    </f:facet> 
    <t:outputText value="#{dataItem.dataMesaj}"> 
    <f:convertDateTime timeZone="#{tzUIBean.tz}" pattern="dd.MM.yyyy" /> 
    </t:outputText> 
</t:column> 
<t:column> 
    <f:facet name="header"> 
    <t:outputText value="Numar Mesaj"/> 
    </f:facet> 
    <t:outputText value="#{dataItem.numarMesaj}"/> 
</t:column> 
<t:column> 
    <f:facet name="header"> 
    <t:outputText value="Societate Sender"/> 
    </f:facet> 
    <t:outputText value="#{dataItem.societateSender}"/> 
</t:column> 
<t:column> 
    <f:facet name="header"> 
    <t:outputText value="Societate Receiver"/> 
    </f:facet> 
    <t:outputText value="#{dataItem.societateReceiver}"/> 
</t:column> 
</t:dataTable> 
</h:form> 

Это создаст DataTable, заселенный с деталями. Любые идеи о том, как я могу сделать, теперь выпадающее меню появляется, когда я нажимаю сообщение (либо столбец «Nr» (первый столбец в dataTable)), либо столбец «Numar Mesaj»? Мне нужно, чтобы выпадающее меню отображалось под этой конкретной строкой в ​​dataTable, поэтому я могу выбрать формат файла из этого раскрывающегося списка и загрузить эту конкретную запись в формате .pdf, .xls или любого другого типа.

По крайней мере, так я думал, что это сработало. Любые идеи приветствуются.

+0

Есть альтернатива тому, что я хочу, и это должно быть проще: dataTable не охватывает весь экран, у меня много свободного места в правой части экрана. Как я могу создать новый выпадающий список в правой части экрана, когда я нажимаю одну из записей? Как разместить позицию JSF на странице HTML? Позвольте мне изучить это. –

ответ

0

Ну, это было бы намного проще с надлежащей структурой JSF, например, с Prime Faces. У них есть специальные компоненты для такого рода вещей.

С JSF по умолчанию это будет часть работы. Я могу себе представить что-то вроде этого: Сначала вам нужно сделать один из ваших столбцов кликабельным, например, h: commandLink. Это (щелчок) действие может изменить специальный флаг (ы), который будет использоваться для отображения дополнительной строки с форматами. Следующий шаг делает дополнительные строки для каждой строки данных, где скрыта вторая строка (по вышеуказанным флагам). Нажав на ссылку в столбце, вы увидите дополнительную строку с форматами. Кажется, единственная трудность состоит в том, чтобы показать только 1 строку, а не все из них, поэтому события и флаги должны быть достаточно умными. Вы должны отслеживать выбор текущей строки и использовать ее при показе дополнительной строки.

+0

О, мальчик ... как бы я это сделал? –

+0

переключитесь на Prime Faces и используйте таблицу данных. У этого уже есть функциональность, описанная выше. Проверьте это: http://www.primefaces.org/showcase/ui/data/datatable/expansion.xhtml – smoczyna

+0

Я не могу «переключиться на PrimeFaces», потому что моя компания использует JSF. Поэтому я должен сделать это в JSF. Плюс, я понятия не имею о PF. Должен быть способ сделать это в JSF. –

Смежные вопросы