2012-04-04 56 views
3

我有一个VF页面,我使用apex:pageblocktable来显示一堆记录。 其中一列是选取列表,我需要显示/不显示字段根据选择列表上的选择。根据挑选清单选择的显示字段

<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> 

在上面的代码delivery_ c是与道路和铁路值的选择列表。如果用户选择道路,那么我需要显示道路 - C,如果用户选择铁路,那么我需要显示铁路 _c

我该怎么做呢?

谢谢

回答

3

这样做的一种方法是在Visualforce中使用部分页面刷新。

将这两个字段放在同一列中,并使用“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> 
相关问题