4

いくつかの関連リストを含むVisualforceページを作成しようとしています。標準のレイアウトページにあるのと同じ関連リストを表示しようとしています。OpenActivities、ActivityHistories、Attachments、CaseSolutionsはすべて正常に機能します。

ただし、EmailMessagesを追加しようとすると、次のエラーが発生します。

Visualforceエラー

'EmailMessages'はエンティティCaseの有効な子関係名ではありません

いくつかのsoqlを使用してEmailMessagesを取得することで、この問題を回避することができますが、単なる関連リストにしたいと思います。

誰かが私が間違っているかもしれないことを提案できますか?

4

2 に答える 2

2

残念ながら、いいえ、それは一般の人々が実行されるのに十分に賛成することは決してないものの1つです。現在、EmailMessages関連リストはではサポートされ<apex:relatedlist>ていませんが、フィルタリングされていないリストを生成するために必ずしもSOQLを使用する必要はありません。反復要素の値を指定して、関係から直接データを描画できます。

<apex:dataTable value="{!Case.EmailMessages}" var="email">
    <apex:column value="{!email.Subject}" />
    ...
</apex:dataTable>
于 2011-04-13T08:29:48.797 に答える
1

これは、HTMLテーブルでapex:repeatを使用するより完全な例です。このアプローチでは、行間の間隔を調整できます。また、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>
于 2011-06-11T16:27:37.420 に答える