Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Salesforce 使用VisualForce中的输入字段有选择地隐藏页面块_Salesforce_Visualforce - Fatal编程技术网

Salesforce 使用VisualForce中的输入字段有选择地隐藏页面块

Salesforce 使用VisualForce中的输入字段有选择地隐藏页面块,salesforce,visualforce,Salesforce,Visualforce,仅当输入字段“Gift_c.PaymentMethod_c”(这是一个下拉列表)具有特定值(即“信用卡”)时,我才想显示PageBlock部分“ccBlock”。我试过很多方法,但到目前为止运气不好 <apex:pageBlockSection title="Basic Information" columns="1" > <apex:inputField value="{!Gift__c.Contact__c}"/> <ap

仅当输入字段“Gift_c.PaymentMethod_c”(这是一个下拉列表)具有特定值(即“信用卡”)时,我才想显示PageBlock部分“ccBlock”。我试过很多方法,但到目前为止运气不好

    <apex:pageBlockSection title="Basic Information" columns="1" >
        <apex:inputField value="{!Gift__c.Contact__c}"/>
        <apex:inputField value="{!Gift__c.PaymentMethod__c}" id="payMethod" >
            <apex:actionSupport event="onchange"  reRender="ccBlock, bankBlock" action="{!HideBlock}" />
        </apex:inputField>
    </apex:pageBlockSection>
    <apex:pageBlockSection title="Credit Card" rendered="{!visi}" columns="1" id="ccBlock">
        <apex:inputField value="{!Gift__c.CCType__c}"/>
        <apex:inputField value="{!Gift__c.CCName__c}"/>
        <apex:inputField value="{!Gift__c.CCNumber__c}"/>
        <apex:inputField value="{!Gift__c.CCExpiryMonth__c}"/>
        <apex:inputField value="{!Gift__c.CCExpiryYear__c}"/>
    </apex:pageBlockSection>  

您的解决方案不起作用,因为您试图重新提交已隐藏的pageBlockSection,因此您无权访问此分区。为此,您需要一些“包装器”面板重新招标

我倾向于用javascript来做这样的事情:


函数checkValue(){
if(jQuery('[id$=payMethod]')。val()=='信用卡'){
jQuery('[id$=myPanel]')。show();
}
否则{
jQuery('[id$=myPanel]')。hide();
}
}

您的解决方案不起作用,因为您试图重新提交已隐藏的pageBlockSection,因此您无权访问此分区。为此,您需要一些“包装器”面板重新招标

我倾向于用javascript来做这样的事情:


函数checkValue(){
if(jQuery('[id$=payMethod]')。val()=='信用卡'){
jQuery('[id$=myPanel]')。show();
}
否则{
jQuery('[id$=myPanel]')。hide();
}
}

您使用的是控制器还是控制器扩展?是否也可以粘贴一些代码,特别是如果您在VF标记中引用的任何字段周围有任何逻辑?@JCD扩展类中没有任何字段本身的逻辑。它由Salesforce的数据库自动填充。我曾尝试创建一个名为“visi”的方法来查找“PaymentMethod_u__c”(下拉列表)的值,但调用DB字段时没有填充它,我也不知道如何查找HTML元素的值(甚至可能在生命周期的该点上都没有设置)。您需要检查内存中记录的值,而不是让您的
visi
方法在数据库中查找
Gift\uuuu c.PaymentMethod\uu c
字段的值(因为更改尚未持久化)。您是否在控制器的构造函数中调用了
ApexPages.StandardController.getRecord()
?您是否使用了控制器或控制器扩展?您是否介意粘贴一些代码,特别是如果在VF标记中引用的任何字段周围有任何逻辑?@JCD扩展类中没有任何字段本身的逻辑。它由Salesforce的数据库自动填充。我曾尝试创建一个名为“visi”的方法来查找“PaymentMethod_u__c”(下拉列表)的值,但调用DB字段时没有填充它,我也不知道如何查找HTML元素的值(甚至可能在生命周期的该点上都没有设置)。您需要检查内存中记录的值,而不是让您的
visi
方法在数据库中查找
Gift\uuuu c.PaymentMethod\uu c
字段的值(因为更改尚未持久化)。您是否在控制器的构造函数中调用了
ApexPages.StandardController.getRecord()