2014-03-03 33 views
0

我有一个自定义的Visualforce页面,允许用户输入&修改Opportunity产品信息。如何从apex引用相关对象:Visualforce页面上的inputField?

我正在使用顶点: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> 

我的意图是有条件地呈现/不渲染基础上,s.Circuit_ C色谱柱/场是什么在“P-型 _c”的产品2场记录这个OLI最初是从哪里填充的。

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

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

非常感谢。

回答

1

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

查询应该是这样的:

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

检查你查询你缺少字段:Product2, Product2.ptype__c,因为它可以在异常可见也。

+0

感谢您的回复。实际上,Product2.ptype__c在原始查询中。另外,为什么在查询示例中包含“Product2”作为字段名称? (在“Circuit__c”和“Product2.ptype__c”之间) – user2653485

相关问题