2012-04-04 19 views
3

私は、レコードの束を表示するために、頂点:pageblocktableを使用しているVFページを持っています。 列の1つが選択リストであり、選択肢に応じてフィールドを表示/非表示にする必要があります。選択リストの選択に基づく表示フィールド

<apex:pageBlockTable value="{!showRecord}" var="item"> 
    <apex:column headerValue="Delivery"> 
    <apex:inputField value="{!item.delivery__c}"/> 
    </apex:column> 
    <apex:column headerValue="Roadway"> 
    <apex:inputField value="{!item.road__c}"/> 
    </apex:column> 
    <apex:column headerValue="Rail"> 
    <apex:inputField value="{!item.rail__c}"/> 
    </apex:column> 
</apex:pageBlockTable> 

上記コードの配送_ は、道路と鉄道の値を持つ選択リストです。ユーザーが道路を選択した場合、私は道路を表示する必要があり、ユーザーが鉄道を選択すると、レールを表示する必要があります _c

どうすればいいですか?

おかげ

答えて

3

はこれを行う1つの方法は、Visualforceのに部分ページのリフレッシュを使用することです。

両方のフィールドを同じ列に置き、if-statementを使用してフィールドを動的に表示/非表示にするには、 "rendered"属性を使用します。その後、actionSupportタグを使用してdelivery__cフィールドのAJAX onchangeイベントハンドラを設定します。これは、基本的にそのフィールドをリッスンして変更し、ページ上のテーブルを更新します。これがリフレッシュされるたびに、if文が再評価され、その列に2つのフィールドのいずれかが表示されます。

私はこれを試してみる機会がありませんでしたが、うまくいくはずです。

<apex:pageBlockTable id="mytable" value="{!showRecord}" var="item"> 
    <apex:column headerValue="Delivery"> 
    <apex:actionRegion>   
     <apex:inputField value="{!item.delivery__c}"> 
     <apex:actionSupport event="onchange" reRender="mytable"> 
     </apex:inputField> 
    </apex:actionRegion> 
    </apex:column> 
    <apex:column headerValue="Delivery Type"> 
    <apex:inputField rendered="{!item.delivery__c='Road'}" value="{!item.road__c}"/> 
    <apex:inputField rendered="{!item.delivery__c='Rail'}" value="{!item.rail__c}"/> 
    </apex:column> 
</apex:pageBlockTable> 
関連する問題