2016-04-19 15 views
1

私のp:dataTableの中に、私は必要な行だけをレンダリングしようとしています。コード:primefaceの行を条件付きでレンダリングまたはスタイルする方法dataTable?

<h:form id="f"> 
    <p:dataTable var="order" 
     value="#{mbOrderController.ordersList}"> 
     <f:facet name="header">#{msg.orders}</f:facet> 

     <p:column sortBy="#{order.orderNr}" 
      headerText="#{msg.order_number}"> 
      <p:outputLabel value="#{order.orderNr}" 
       rendered="#{order.type.label == 'Shoes'}" /> 
     </p:column> 

     <p:column sortBy="#{order.date}" headerText="#{msg.date}"> 
      <p:outputLabel value="#{order.date}"> 
       <f:convertDateTime pattern="dd.MM.yy" /> 
      </p:outputLabel> 
     </p:column> 

     <p:column sortBy="#{order.type.label}" headerText="#{msg.type}"> 
      <p:outputLabel value="#{order.type.label}" /> 
     </p:column> 
    </p:dataTable> 
</h:form> 

オーダータイプラベル(3列目)がEnumerationと「靴」、「シャツ」又は「パンツ」とすることができます。私は行を「靴」で表示したいだけです。

rendered属性を最初のp:outputLabelに追加しようとしましたが、この出力ラベルはもちろん隠されています。

Empty row

どのように示すrendered属性を使用して、特定の行を表示することができます。私は、テーブル内の各p:outputLabelrendered属性を追加する場合、すべてのセルが空であるが、表の最下行は、まだ表示されています?誰も助けることができますか?

+1

を表示したい場合は唯一の靴、なぜあなたはこれに基づいてバックエンドでソースリストを用意していませんか? OR:クライアント側でフィルタリングできるようにするには、データテーブル(filterBy = ...)でフィルタを使用しないでください。 – stg

答えて

0

列でrender="#{order.type.label eq 'Shoes'}"をレンダリングしてみてください、あなたはすべてのために書きたくない場合は、あなたがあなたの試みで

<p:row render="#{order.type.label eq 'Shoes'}"> 
<p:column> 
. 
. 
</p:row> 
+0

残念ながら、それは変化しません。すべての 'p:outputLabel'に' rendered = "#{order.type.label eq 'Shoes'}'を追加しても私はまだ空の行を見ることができますスクリーンショットで私の質問を更新しました – John

+0

outputLabel私の答えでも私は言及しましたが、 ''にレンダリングを追加する他のオプションを試してみるのは間違いです。代わりに@BalusCはそれがうまくいかないと言っています。 – techipank

9

を使用することができ、あなたは確かに条件付きでのみ<td>内容、ない<tr>をレンダリングしています。条件付きで<tr><p:dataTable>をレンダリングすることは残念ながら不可能です。

あなたは基本的に2つのオプションがあります。それはビューが期待する正確に何をするよう

  1. がモデルを修正します。

    <p:dataTable value="#{mbOrderController.shoesOrdersList}" var="shoesOrder"> 
    
  2. 使用rowStyleClass CSSで特定の行を非表示にしたり、スタイルにします。

    隠す:

    <p:dataTable ... rowStyleClass="#{order.type.label == 'Shoes' ? 'ui-helper-hidden' : ''}"> 
    

    スタイリング:

    <p:dataTable ... rowStyleClass="#{order.type.label == 'Shoes' ? 'shoeStyle' : ''}"> 
    

    とCSSで 'shoeStyle' を含むクラスセレクタを定義する(アカウントにcss specificityを取る)

関連する問題