首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中的值显示字段。

中的值显示字段。
EN

Stack Overflow用户
提问于 2012-05-04 22:58:49
回答 3查看 8.9K关注 0票数 0

我有一个令人抓狂的问题,我似乎找不到解决的办法。

我正在做一个VF页面,我想要显示字段根据用户插入在其他领域的数字。例如,如果用户在字段"A“中插入2,它将在同一页中显示两个字段。

代码语言:javascript
复制
// 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;
}
}

有谁能帮帮我吗?

谢谢!!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-10 21:22:30

一种解决方案是结合使用rerender和表结构。您需要在控制器中建立一个集合(下面标记为"dataCollection“)。此集合驱动显示的内容和将捕获的内容。

代码语言:javascript
复制
<apex:actionRegion>
  <apex:inputField value="{!controllerObject.NumRows__c}">
    <apex:actionSupport event="onchange" action="{!refresh}" rerender="dynamicTablePanel"/>
  </apex:inputField>
</apex:actionRegion>

<apex:outputPanel id="dynamicTablePanel">
  <apex:pageBlockTable id="dynamicTable" value="{!dataCollection}" var="dataRow"
    columns="2">

    <apex:column headerValue="Column A" title="">
      <apex:inputField value="{!dataRow.ColumnA__c}" />
    </apex:column>

    <apex:column headerValue="Column B" title="">
      <apex:inputField value="{!dataRow.ColumnB__c}" />
    </apex:column>

  </apex:pageBlockTable>
</apex:outputPanel>

这将需要在控制器中进行额外的工作。您必须处理刷新操作,以便根据需要添加或删除收集记录。您还必须处理Save按钮;您必须保存控制器记录,还必须遍历收集项并将其保存在某个位置。我建议在集合中使用子对象。

票数 0
EN

Stack Overflow用户

发布于 2012-05-08 04:33:53

如果你想以动态方式添加超文本标记语言,我认为你应该使用Javascript或者像JQuery这样的Javascript框架,但是我不明白你想要做什么。

请说得更具体些。您要添加什么类型的文件?这些是输入域吗?或者将会是outputFields?你能事先知道要显示的信息吗?

也许你可以使用一个顶尖组件,然后通过一个javascript请求重新渲染它。

票数 0
EN

Stack Overflow用户

发布于 2012-05-08 12:13:37

您是否正在查看基于一个字段中的输入,您是否允许/不允许显示其他字段?

您可以拥有想要显示的所有字段,并使用呈现的标记控制该字段的可见性。

代码语言:javascript
复制
  <apex:outputField value="{!item.field1__c}" >
                         <apex:actionSupport event="onchange" action="{!displayOtherCols}" rerender="mainBlock2"/>  
  </apex:outputField>

<apex:column headerValue="Name" >
                <apex:outputField value="{!item.field2__c}"  rendered="{!(item.field1__c == 'option1')}" />
<apex:outputField value="{!item.field3__c}"  rendered="{!(item.field1__c == 'option2')}" />
            </apex:column>

您可以使用actionsupport来调用一个方法,该方法将处理和设置应该呈现的字段。在这个例子中,我直接检查了字段的值,你可以这样做,也可以在displayothercols方法中设置一个布尔变量的值,然后使用该变量来呈现字段。确保你重新渲染了这个块。

在此示例中,如果field1具有"option1“,则显示另一个字段field2,如果field1为"option2”,则显示field3

希望这能帮上忙..

祝好运

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10451310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档