2012-04-04 5 views
3

레코드 집합을 표시하는 데 apex : pageblocktable을 사용하는 VF 페이지가 있습니다. 열 중 하나는 선택 목록이며 선택 목록의 선택에 따라 필드를 표시하거나 표시하지 않아야합니다. 위의 코드에서 선택 목록 선택에 따라 필드를 표시합니다.

<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 값의 도로 철도와 픽 delivery_이다. 사용자가 도로를 선택하면 도로를 표시해야하고 사용자가 철도를 선택하면 레일을 표시해야합니다. _c

어떻게하면됩니까?

감사

부분 페이지가없이 VisualForce에 새로 고쳐 사용하는 것이 작업을 수행하는

답변

3

한 가지 방법.

두 필드를 동일한 열에 넣고 "rendered"특성을 사용하여 if 문을 사용하여 필드를 동적으로 표시하거나 숨 깁니다. 그런 다음 actionSupport 태그를 사용하여 delivery__c 필드에 대한 AJAX onchange 이벤트 핸들러를 설정합니다. 기본적으로 해당 필드를 수신 대기 한 다음 페이지에서 테이블을 새로 고칩니다. 이를 새로 고칠 때마다 if 문이 다시 평가되고 해당 열의 두 필드 중 하나가 표시됩니다.

나는 이것을 시도 할 기회가 없었지만 제대로 작동해야한다고 생각합니다.

<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> 
관련 문제