2012-04-04 7 views
3

Ich habe eine VF-Seite, auf der ich einen Apex: pageblocktable verwende, um eine Menge Datensätze anzuzeigen. Eine der Spalten ist eine Auswahlliste und ich muss Felder entsprechend der Auswahl auf der Auswahlliste anzeigen/nicht anzeigen.Anzeigefelder basierend auf der Auswahl in einer Auswahlliste

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

im obigen Code delivery_ c Auswahlliste mit Werten Straßen und Eisenbahnen ist. wenn der Benutzer Straßen auswählt, muss ich Straße - c anzeigen und wenn Benutzer Bahnen auswählt, dann muss ich Schiene anzeigen _c

Wie kann ich das tun?

Dank

Antwort

3

Eine Möglichkeit, dies zu tun wäre, partial-Seite nutzen zu können in Visual aktualisiert.

Setzen Sie beide Felder in dieselbe Spalte und verwenden Sie das Attribut "gerendert", um das Feld mithilfe einer if-Anweisung dynamisch ein-/auszublenden. Anschließend richten Sie einen AJAX onchange-Ereignishandler für das Feld delivery__c mit dem actionSupport-Tag ein. Dies wird im Grunde darauf warten, dass dieses Feld geändert wird, um dann die Tabelle auf der Seite zu aktualisieren. Bei jeder Aktualisierung werden Ihre if-Anweisungen erneut ausgewertet und zeigen eines der beiden Felder in dieser Spalte an.

Ich hatte keine Chance, dies zu versuchen, aber ich denke, es sollte funktionieren.

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