So zeigen die Felder nach einem Wert in einer anderen
Ich habe noch ein Kopf-scratcher eines Problems, das ich kann nicht scheinen, um eine Lösung zu finden für die.
Mache ich eine VF-Seite in der Hexe möchte ich Felder anzeigen nach einer Reihe eingefügt durch Benutzer in einer anderen Felder. Zum Beispiel, wenn der Benutzer legen Sie 2 in das Feld "A" wird die Anzeige in zwei Felder auf der gleichen Seite.
//Page
<apex:page standardController="Assure__c" extensions="insEnfant"
standardStylesheets="true">
<apex:sectionHeader title="Ajouter un assuré"
subtitle="{!$User.FirstName}" help="/help/doc/user_ed.jsp?loc=help"></apex:sectionHeader>
<apex:form>
<apex:pageBlock title="Nouveau assuré" id="thePageBlock" mode="edit">
<apex:pageBlockButtons>
<apex:commandButton action="{!save}" value="Enregistrer"></apex:commandButton>
<apex:commandButton action="{!cancel}" value=" Annuler "></apex:commandButton>
</apex:pageBlockButtons>
<apex:pageBlockSection title="General Information" columns="2">
<apex:pageBlockSection id="liste1" columns="1">
<apex:inputField value="{!Assure__c.Civilite__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Nom__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Prenom__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Nom_de_jeune_fille__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Date_de_naissance__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Lieu_de_naissance__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Pays_de_naissance__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Nationalit__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Situation_Familiale__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Numero_de_securit_sociale__c}"></apex:inputField>
</apex:pageBlockSection>
<apex:pageBlockSection id="liste2" columns="1">
<apex:inputField value="{!Assure__c.Telephone_bureau__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Telephone_personnel__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Portable__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Adresse_e_mail__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Adresse__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Code_postal__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Ville__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Pays__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Pays__c}"></apex:inputField>
<apex:pageBlockSectionItem>
<apex:outputLabel value="Nombre d'enfants" />
<apex:outputPanel>
<apex:inputField value="{!Assure__c.Nombre_enfants__c}">
<apex:actionSupport event="onchange" rerender="thePageBlock"
status="statut1" />
</apex:inputField>
<apex:actionStatus startText="Application..." id="statut1" />
</apex:outputPanel>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem>
<apex:outputLabel
value="{!$ObjectType.Assure__c.fields.Etudes_superieures__c.label}" />
<apex:outputPanel>
<apex:inputField value="{!Assure__c.Etudes_superieures__c}">
<apex:actionSupport event="onchange" rerender="thePageBlock"
status="statut2" />
</apex:inputField>
<apex:actionStatus startText="Application..." id="statut2" />
</apex:outputPanel>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem>
<apex:outputLabel value="Service militaire" />
<apex:outputPanel>
<apex:inputField value="{!Assure__c.Service_militaire__c}">
<apex:actionSupport event="onchange" rerender="thePageBlock"
status="statut3" />
</apex:inputField>
<apex:actionStatus startText="Application..." id="statut3" />
</apex:outputPanel>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlockSection>
<apex:pageBlockSection
title="Entrez le niveau d'études supérieures atteint" columns="1"
rendered="{!(Assure__c.Etudes_superieures__c)}">
<apex:inputField value="{!Assure__c.Type_etudes__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Diplome_obtenu__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Nombre_annees__c}"></apex:inputField>
</apex:pageBlockSection>
<apex:pageBlockSection
title="Entrez les informations concernant le service militaire"
columns="1" rendered="{!(Assure__c.Service_militaire__c)}">
<apex:inputField value="{!Assure__c.Type_de_service__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Date_de_debut__c}"></apex:inputField>
<apex:inputField value="{!Assure__c.Date_de_fin__c}"></apex:inputField>
</apex:pageBlockSection>
<apex:pageBlockSection title="Liste des enfants" columns="1"
rendered="{!IF(Assure__c.Nombre_enfants__c > 0, true, false)}">
<apex:pageBlockTable value="{!accts}" var="a" id="table">
<apex:facet name="footer">
<apex:commandLink value="Ajouter" action="{!addRow}"
rerender="table,error" />
</apex:facet>
<apex:column headerValue="Nom">
<apex:inputField value="{!a.Name}" />
</apex:column>
<apex:column headerValue="Prénom">
<apex:inputField value="{!a.Prenom__c}" />
</apex:column>
<apex:column headerValue="Né le">
<apex:inputField value="{!a.Date_de_naissance__c}" />
</apex:column>
<apex:column headerValue="Lieu de naissance">
<apex:inputField value="{!a.Lieu_de_naissance__c}" />
</apex:column>
<apex:column headerValue="Situation">
<apex:inputField value="{!a.Situation__c }" />
</apex:column>
</apex:pageBlockTable>
</apex:pageBlockSection>
</apex:pageblock>
</apex:form>
</apex:page>
//Controller
public class insEnfant{
public List<Enfants__c> accts {get; set;}
public insererEnfant(){
accts = new List<Enfants__c>();
accts.add(new Enfants__c());
}
public void addrow(){
accts.add(new Enfants__c());
}
public PageReference save(){
insert accts;
PageReference home = new PageReference('/home/home.jsp');
home.setRedirect(true);
return home;
}
}
Kann mir jemand helfen bitte ?
Dank !!
Du musst angemeldet sein, um einen Kommentar abzugeben.
One-Lösung würde bedeuten, mit rerender kombiniert mit einer Tabellenstruktur. Sie müssen, um festzustellen, eine Sammlung (gekennzeichnet mit "dataCollection" unten) innerhalb des Reglers. Diese Sammlung treibt, was angezeigt wird und was aufgenommen wird.
Dies erfordert zusätzliche Arbeit, die in den controller. Sie müssen behandeln Sie die Aktion aktualisieren, hinzufügen oder entfernen-Sammlung von Datensätzen, wie gebraucht. Sie müssen sich auch mit der Schaltfläche Speichern; speichern Sie die controller-Datensatz und auch Zyklus durch die Sammlung Gegenstände und speichern Sie Sie irgendwo. Ich schlage vor, mit einem Kind-Objekt für die Sammlung.
Wenn Sie möchten, fügen Sie Html-dinamically, denke ich, sollten Sie Javascript verwenden, oder ein Javascript-framework wie JQuery, aber ich kann nicht bekommen, was Sie zu tun beabsichtigen.
Bitte genauer sein. Welche Art von fileds, die Sie hinzufügen möchten? Sind diese input-Felder? oder wird outputFields? Können Sie im Voraus wissen, die Informationen anzeigen?
Vielleicht können Sie eine apex-Komponente und rerender es dabei eine javascript-Anfrage.
Suchen Sie bei basiert auf der Eingabe in einem Feld, Sie erlauben/verbieten die Anzeige anderer Felder?
Haben, könnten Sie alle Felder, die Sie anzeigen möchten, und kontrollieren Sie die visbility der das Feld mit den gerenderten tag.
Können Sie actionsupport eine Methode aufrufen, die verarbeitet werden und festlegen, welche Felder dargestellt werden sollen, durch . In diesem Beispiel bin ich direkt prüfen Sie den Wert des Feldes können Sie entweder dies tun oder den Wert einer boolschen variable in displayothercols Methode und verwenden Sie die variable die zum Rendern der Felder. stellen Sie sicher, dass Sie rerender den block .
in diesem Beispiel, wenn das Feld1 hat, "option1", dann ein weiteres Feld, Feld2 angezeigt und wenn Feld1 "option2" then field3 wird angezeigt
Hoffe, das hilft..
Glück