3

多数のレコードを表示するために apex: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>

上記のコードの delivery_ c は、道路と鉄道の値を持つピックリストです。ユーザーが道路を選択した場合、road--c を表示する必要があり、ユーザーが鉄道を選択した場合、rail _cを表示する必要があります

どうすればそれを行うことができますか?

ありがとう

4

1 に答える 1

3

これを行う 1 つの方法は、Visualforce で部分ページ更新を使用することです。

両方のフィールドを同じ列に配置し、"rendered" 属性を使用して、if ステートメントを使用してフィールドを動的に表示/非表示にします。次に、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>
于 2012-04-05T12:24:23.430 に答える