我有一个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是带有道路和铁路价值的选项列表。如果用户选择道路,那么我需要显示road-c,如果用户选择铁路,那么我需要显示铁路 _c
我该怎么做?
由于
答案 0 :(得分: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>