2016-07-13 14 views
0

ユーザーからの入力を受けるフィールドがいくつかあるフォームがあります。この入力は、ユーザーが最初のフォームで選択したオプション/フィールドに従って、データベースからの情報でHibernateを介して入力されているdataTableを生成するために使用されます。特定の行の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は画面全体をカバーしていないため、画面の右側に空きスペースがたくさんあります。レコードの1つをクリックしているときに、画面の右側に新しいドロップダウンを表示させるにはどうすればよいですか? JSFをHTMLページに配置するにはどうすればよいですか?それを見てみましょう。 –

答えて

0

たとえば、Prime Facesのような適切なJSFフレームワークを使用する方が簡単です。彼らはそのようなもののための専用コンポーネントを持っています。

デフォルトのJSFでは、ジョブのチャンクになります。私はそのようなことを想像することができます: まず、あなたの列の1つをクリックして、例えばh:commandLinkでクリック可能にする必要があります。この(クリック)アクションは、特別なフラグを変更することがあります。特別なフラグは、書式付きの余分な行を表示するために使用されます。 次のステップでは、2番目の行が非表示になっているデータ行ごとに(上記のフラグによって)追加の行を作成しています。列内のリンクをクリックすると、その行がフォーマットで表示されます。 唯一の難しさは、イベントとフラグが非常に賢明にする必要があるように、それらのすべてではなく、わずか1行を表示することです。現在の行の選択を追跡し、余分な行を表示するときにそれを使用する必要があります。

+0

ああ男...どうすればいい? –

+0

プライムフェイスに切り替え、そのデータテーブルを使用します。それはすでに私が上記の機能性を持っています。これをチェックしてください:http://www.primefaces.org/showcase/ui/data/datatable/expansion.xhtml – smoczyna

+0

私の会社はJSFを使用しているので、私は「PrimeFacesに切り替えることができません。だから私はJSFでそれをしなければなりません。さらに、私はPFのことを知らない。 JSFでそれを行う方法がなければなりません。 –

関連する問題