【问题标题】:How do you reference a related object from apex:inputField on Visualforce page?您如何在 Visualforce 页面上从 apex:inputField 引用相关对象?
【发布时间】:2014-03-03 22:39:12
【问题描述】:

我有一个自定义 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 列/字段。

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

谁能帮我理解从 Apex 标签内部引用相关对象的正确语法?

非常感谢。

【问题讨论】:

    标签: salesforce apex-code visualforce apex


    【解决方案1】:

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

    查询应如下所示:

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

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

    【讨论】:

    • 感谢您的回复。实际上, Product2.ptype__c 在原始查询中。另外,为什么在查询示例中包含“Product2”作为字段名称? (在“Circuit__c”和“Product2.ptype__c”之间)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多