根据选项列表选择中的选择显示字段

时间:2012-04-04 16:41:42

标签: salesforce apex-code visualforce

我有一个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

我该怎么做?

由于

1 个答案:

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