2011-12-14 3 views
0

私はJSF 2.0とPrimeFaces 2.2を使用しています。私はドロップダウンメニューからの選択に従って列を更新する必要があるデータテーブルを持っています。私は複数のデータテーブルを作成する必要はありません。その理由は、データテーブル内の列の数と列の値が表示されるため、ドロップダウンには多くの値があるためです。データテーブルの列を動的に変更するにはどうすればよいですか?

これは可能ですか?

私は非常に具体的に、私はドロップダウンメニューに10項目を持っていると仮定すると、ドロップダウンメニューから選択して表示する必要がある別のタイプのデータテーブルがあります、私は10種類私は自分の選択に応じて列を選択することができる単一のデータテーブルが必要です(データテーブルには同じエントリがたくさんあるため、すべてのデータテーブルに繰り返しのエントリがたくさんあります)。

+0

あなたはすでに実装DataTableの異なる列を持っており、ショー/あなたの選択に基づいて、それらを非表示にしたいですか?または、あなたの選択に基づいてリスト(dataTable値)を変更したいのですか(基本的に、これはすべてのオプションdataTableが異なるレコードを表示することを意味します)? – spauny

+0

はい私はすでに実装されているdataTableの異なる列を持ち、自分の選択に基づいてそれらを表示/非表示にしたいと思います。 – curious

+0

あなたはあまり具体的ではありませんでした。私は私の答えを更新し、BalusCソリューションを追加しました! – spauny

答えて

1

はい!一緒に(あなたがのdataTableコンポーネントにデフォルトのリストを提供していると仮定)方法を見つけるのをしてみましょう:

<p:dataTable ...with various attributes... id="myTable" value="#{myBean.recordList}"> 
    ...and various columns... 
</p:dataTable> 
<h:selectOneMenu value="..."> 
    <f:selectItems ...your items...> 
    <p:ajax event="change" listener="#{myBean.myMethod}" update="myTable" /> 
</h:selectOneMenu> 

そしてmyMethodあなたがrecordListを変更して(更新)テーブルコンポーネントを更新する方法になります。もちろん、外側のフォームコンポーネントを配置する必要があります。

UPDATE:あなたはDataTableの異なる列を持つようにしたい場合は、すでに実装されており、ショー/あなたの選択(BalusC応答)に基づいてそれらを隠す:

<p:dataTable ...with various attributes... id="myTable" value="#{myBean.recordList}"> 
    <p:column rendered="#{myBean.myValue == 1}" > 
     first column 
    </p:column> 
    <p:column rendered="#{myBean.myValue == 2}" > 
     second column 
    </p:column> 
    <p:column rendered="#{myBean.myValue == 3}" > 
     third column 
    </p:column> 
</p:dataTable> 
<h:selectOneMenu value="#{myBean.myValue}"> 
    <f:selectItem itemLabel="First Column" itemValue="1" /> 
    <f:selectItem itemLabel="Second Column" itemValue="2" /> 
    <f:selectItem itemLabel="Third Column" itemValue="3" /> 
    <p:ajax event="change" update="myTable" /> 
</h:selectOneMenu> 
+0

@curiousこれは、10個のレコードリストが必要である(または同じではないレコードを変更する)ことを意味します。その場合は、最初のソリューションを使用する必要があります...リクエストごとにajaxイベントが発生するたびにあなたのメソッドには、recordListの値を変更し、新しい値でdataTableを更新します...あなたは完全なコードをしたいですか? :) – spauny

関連する問題