2016-07-13 16 views
0

Ich habe ein Formular, das einige Felder hat, die Eingaben vom Benutzer nehmen. Diese Eingabe wird dann verwendet, um eine Datentabelle zu generieren, die über Hibernate mit Informationen aus der Datenbank gemäß den Optionen/Feldern gefüllt wird, die vom Benutzer im ursprünglichen Formular ausgewählt wurden.Erstellen Dropdown-Menü in H: DataTable für eine bestimmte Zeile

Ich muss irgendwie ein Dropdown-Menü für einen bestimmten Datensatz erzeugen, auf den angeklickt wird, und dann diesen Datensatz in einem bestimmten Dateiformat herunterladen (ich habe bereits eine ähnliche Methode dafür, die von jemand anderem gemacht wurde).

Hier ist, wie meine Datatable wie folgt aussehen:

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

Diese eine Datatable generieren, mit Elementen gefüllt. Irgendwelche Ideen, wie kann ich jetzt ein Dropdown-Menü erscheinen lassen, während ich auf eine Nachricht klicke (entweder die "Nr" -Spalte (die erste Spalte in der Datentabelle)) oder die "Numar Mesaj" -Spalte? Ich brauche das Dropdown-Menü, um unterhalb dieser spezifischen Zeile in der Datentabelle angezeigt zu werden, sodass ich das Dateiformat aus diesem Dropdown auswählen und den entsprechenden Datensatz als PDF-, XLS- oder andere Dateitypen herunterladen kann.

Zumindest dachte ich, dass es so funktioniert. Irgendwelche Ideen werden geschätzt.

+0

Es gibt eine Alternative zu dem, was ich will, und es sollte einfacher sein: Die DataTable deckt nicht den gesamten Bildschirm ab, ich habe viel Platz auf der rechten Seite des Bildschirms. Wie kann ich ein neues Dropdown auf der rechten Seite des Bildschirms erscheinen lassen, während ich auf einen der Datensätze klicke? Wie positioniere ich eine JSF-Sache in einer HTML-Seite? Lass mich das untersuchen. –

Antwort

0

Nun, es wäre viel einfacher mit JSF-Framework wie Prime Faces zu tun. Sie haben dedizierte Komponenten für diese Art von Sachen.

Mit Standard-JSF wird es ein Stück Job sein. Ich kann mir so etwas vorstellen: Zuerst müssen Sie eine Ihrer Spalten anklickbar machen mit zum Beispiel h: commandLink. Diese (Klick-) Aktion kann spezielle Flags ändern, die verwendet werden, um eine zusätzliche Zeile mit Formaten anzuzeigen. Der nächste Schritt besteht darin, zusätzliche Zeilen für jede Datenzeile zu erstellen, in der die zweite Zeile verborgen ist (durch die obigen Flags). Wenn Sie auf den Link in Ihrer Spalte klicken, wird diese zusätzliche Zeile mit Formaten angezeigt. Es scheint die einzige Schwierigkeit ist nur eine Zeile zu zeigen, nicht alle von ihnen, so dass die Veranstaltung und Flaggen ziemlich clever sein müssen. Sie müssen die aktuelle Zeilenauswahl verfolgen und sie verwenden, wenn Sie eine zusätzliche Zeile anzeigen.

+0

Oh Junge ... wie würde ich das tun? –

+0

Wechseln Sie zu Prime Faces und verwenden Sie die Datentabelle. Es hat bereits die oben beschriebene Funktionalität. Check out: http://www.primefaces.org/showcase/ui/data/datatable/expansion.xhtml – smoczyna

+0

Ich kann nicht zu PrimeFaces wechseln, weil meine Firma JSF verwendet. Also muss ich es in JSF machen. Außerdem habe ich keine Ahnung von PF. Es muss einen Weg geben, dies in JSF zu tun. –