我有一个自定义的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标签内部引用相关对象的正确语法吗?
非常感谢。
答案 0 :(得分:1)
您的VF语法是正确的但在查询中您错过了查询Product2字段。
查询应如下所示:
List<OpportunityLineItem> s = [SELECT id, Circuit__c, Product2, Product2.ptype__c FROM OpportunityLineItem];
检查您的查询是否缺少字段:Product2, Product2.ptype__c
,因为它也可以在异常中看到。