在Case的Visualforce页面中访问与电子邮件相关的列表

时间:2011-04-12 15:12:02

标签: salesforce visualforce

我正在尝试创建一个包含许多相关列表的Visualforce页面。我正在尝试在标准布局页面上显示相同的相关列表。 OpenActivities,ActivityHistories,Attachments和CaseSolutions都运行良好。

但是当我尝试添加EmailMessages时,我收到以下错误。

Visualforce错误

'EmailMessages'不是实体Case

的有效子关系名称

我可以通过使用一些soql获取EmailMessages来解决它,但我真的希望它只是一个简单的相关列表。

任何人都可以提出我可能做错的建议吗?

2 个答案:

答案 0 :(得分:2)

不幸的是,不,它是普通人群永远不会满足于实施的那些事情之一。现在,EmailMessages不支持<apex:relatedlist>相关列表。但是,您不一定要使用SOQL生成未过滤的列表,您可以指向迭代元素的值以直接从关系中绘制数据:< / p>

<apex:dataTable value="{!Case.EmailMessages}" var="email">
    <apex:column value="{!email.Subject}" />
    ...
</apex:dataTable>

答案 1 :(得分:1)

以下是使用apex的更全面的示例:使用HTML表重复。此方法允许您调整行之间的间距。它还包括ReplyToAll操作。我计划通过更多操作扩展此示例,并在电子邮件信息列中添加更多信息。

<apex:tab label="Email" name="Email2" id="tabEmail2">
    <apex:form >
        <apex:pageBlock id="emailPageBlock">
            <table border="0"  class="emailable">       
            <tr>
                <th class="emailActionColumn">Action</th>
                <th class="emailInfoClass">Information</th>
                <th class="emailBodyClass">Body</th>
            </tr>
            <!-- get the case comments from the controller -->
            <apex:repeat value="{!case.EmailMessages}" var="emsg">
                <tr>
                <td class="emailActionColumn">
                <!-- Rely to all -->
                <!-- 
                _ui/core/email/author/EmailAuthor?email_id=02s7000000Bi6uv&replyToAll=1&retURL=%2F02s7000000Bi6uv
                 -->
                <apex:outputLink title="" value="../_ui/core/email/author/EmailAuthor?email_id={!emsg.id}&&replyToAll=1&retURL=/apex/{!$CurrentPage.Name}%3Fid={!case.id}" style="font-weight:bold">Reply To All</apex:outputLink> 
                </td>
                <td>
                <!-- display the email information  -->
                <div class="emailInfoClass">
                <apex:outputField value="{!emsg.FromName}"></apex:outputField>
                </div>
                </td>
                <td>
                <!-- display the email body formatted using the apex outputField -->
                <div class="emailBodyClass">
                <apex:outputField value="{!emsg.TextBody}"></apex:outputField>
                </div>
                </td>
                </tr>
            </apex:repeat>
            </table>
        </apex:pageBlock>
    </apex:form>
</apex:tab>