Salesforce 使用VisualForce中的输入字段有选择地隐藏页面块
仅当输入字段“Gift_c.PaymentMethod_c”(这是一个下拉列表)具有特定值(即“信用卡”)时,我才想显示PageBlock部分“ccBlock”。我试过很多方法,但到目前为止运气不好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
<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()
?