如何在Visualforce页面上从apex:inputField引用相关对象?

时间:2014-03-03 22:39:12

标签: salesforce apex-code visualforce apex

我有一个自定义的Visualforce页面,允许用户输入&修改机会产品信息。

我正在使用apex:pageblockTable来显示包含与商机相关的订单项的列表。我想根据相关PRODUCT2对象中相关字段的值有条件地控制某些字段的显示行为,但我遇到了问题。

这是我的Visualforce代码:

<apex:column headerValue="{!$ObjectType.OpportunityLineItem.Fields.Circuit__c.Label}">
<apex:inputField value="{!s.Circuit__c}" 
                 style="width:70px"
                 required="true" onkeyup="refreshTotals();"
                 rendered="{!s.Product2.ptype__c == 'Recurring'}"/>
</apex:column>

我的目的是根据最初填充此OLI的Product2记录的'ptype _c'字段中的条件有条件地呈现/不呈现s.Circuit_ c列/字段。

虽然代码编译没有问题,但是当我执行它时,我收到错误“SObject行是通过SOQL检索的,而不查询请求的字段:OpportunityLineItem.Product2”

有人可以帮我理解从Apex标签内部引用相关对象的正确语法吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

您的VF语法是正确的但在查询中您错过了查询Product2字段。

查询应如下所示:

List<OpportunityLineItem> s =  [SELECT id, Circuit__c, Product2, Product2.ptype__c FROM OpportunityLineItem];

检查您的查询是否缺少字段:Product2, Product2.ptype__c,因为它也可以在异常中看到。