1

簡単そうに聞こえますが、テーブルに出力された値をいくつかのフィールドセットから取得しているため、管理者ユーザーはテーブルに表示される列をカスタマイズできます。

これが私の機能しているページブロックです...

        <apex:pageBlock title="{!$Label.Search_Results}">
        <apex:pageBlockTable value="{!SearchResults}" var="pictureGallerySearchResult" title="SearchResults">
            <apex:column headerValue="Image" styleClass="imageDataCell">
                <a target="_blank" href="/servlet/servlet.FileDownload?file={!pictureGallerySearchResult.ActualAttachment.Id}" >
                    <img class="searchResultImage" style="{!SearchResultsImageStyle}" src="/servlet/servlet.FileDownload?file={!pictureGallerySearchResult.ActualAttachment.Id}" alt="{!pictureGallerySearchResult.ActualAttachment.Name}"/>
                </a>
            </apex:column>
            <apex:column headerValue="Test" value="{!pictureGallerySearchResult.Project[pictureGallerySearchResultField]}"/>
            <apex:repeat value="{!$ObjectType.Project__c.FieldSets.Picture_Gallery_Search_Results}" var="pictureGallerySearchResultField">
                <apex:column headerValue="{!$ObjectType.Project__c.Fields[pictureGallerySearchResultField].label}" value="{!pictureGallerySearchResult.Project[pictureGallerySearchResultField]}"/>
            </apex:repeat>              
            <apex:repeat value="{!$ObjectType.Store__c.FieldSets.Picture_Gallery_Search_Results}" var="pictureGallerySearchResultField">
                <apex:column headerValue="{!$ObjectType.Store__c.Fields[pictureGallerySearchResultField].label}" value="{!pictureGallerySearchResult.Store[pictureGallerySearchResultField]}"/>
            </apex:repeat>
            <apex:repeat value="{!$ObjectType.Visit__c.FieldSets.Picture_Gallery_Search_Results}" var="pictureGallerySearchResultField">
                <apex:column headerValue="{!$ObjectType.Visit__c.Fields[pictureGallerySearchResultField].label}" value="{!pictureGallerySearchResult.Visit[pictureGallerySearchResultField]}"/>
            </apex:repeat>
            <apex:repeat value="{!$ObjectType.Photo_Attachment__c.FieldSets.Picture_Gallery_Search_Results}" var="pictureGallerySearchResultField">
                <apex:column headerValue="{!$ObjectType.Photo_Attachment__c.Fields[pictureGallerySearchResultField].label}" value="{!pictureGallerySearchResult.PhotoAttachment[pictureGallerySearchResultField]}"/>
            </apex:repeat>
        </apex:pageBlockTable>
    </apex:pageBlock>

最初の列に画像の「ハードコードされた」ハイパーリンクを作成したことがわかりますが、カスタムオブジェクトの名前フィールドである場合は、フィールドを動的にハイパーリンクしたいと思います。

たとえば、フィールドセットが...

$ObjectType.Project__c.FieldSets.Picture_Gallery_Search_Results

...「名前」というフィールドが含まれています。そのプロジェクトを表示するためにセールスフォースページに移動するハイパーリンクを挿入します。

したがって、最初に、フィールドがカスタムオブジェクト名フィールドであるかどうかを判断できる必要があります。次に、ラベルではなくハイパーリンクを出力する必要があります。

誰かが何かアイデアを持っているなら、私は最も感謝するでしょう。

これをお読みいただきありがとうございます。

4

2 に答える 2

2

APEXコントローラー/拡張機能でこのロジックを実行することを検討しましたか?クエリを実行した後、結果を繰り返し処理し、それぞれのハイパーリンクを決定し、検索結果の一意の値(おそらくID)と値をキーとしてVisualforceページに公開するマップにデータを入力できます。ハイパーリンクになります。次に、Visualforceイテレータで、map[SearchResult.Id]または最終的にキーとなるものを実行できます。

于 2013-02-02T04:29:02.097 に答える
1
<apex:column headerValue="{!$Label.Filename}">{!pictureGallerySearchResult.ActualAttachment.Name}</apex:column>
<apex:repeat value="{!$ObjectType.Project__c.FieldSets.Picture_Gallery_Search_Results}" var="pictureGallerySearchResultField">
    <apex:column headerValue="{!$ObjectType.Project__c.Fields[pictureGallerySearchResultField].label}">
        <apex:outputLabel value="{!pictureGallerySearchResult.Project[pictureGallerySearchResultField]}" rendered="{!NOT(ShowResultFieldHyperlinkMap[$ObjectType.Project__c.Fields[pictureGallerySearchResultField].label])}"/>
        <apex:outputLink value="{!URLFOR($Action.Project__c.View, pictureGallerySearchResult.Project['Id'])}" rendered="{!ShowResultFieldHyperlinkMap[$ObjectType.Project__c.Fields[pictureGallerySearchResultField].label]}" styleClass="resultFieldHyperlink">
            <apex:outputLabel value="{!pictureGallerySearchResult.Project[pictureGallerySearchResultField]}" styleClass="resultFieldHyperlinkLabel"/>
        </apex:outputLink>
    </apex:column>
</apex:repeat>
于 2013-02-19T09:52:36.100 に答える