2013-02-01 51 views
1

聽起來很容易,但我從多個字段集中獲取表格中的值,因此管理員用戶可以自定義出現在桌子。如何在apex中爲自定義對象名稱字段輸出超鏈接:PageBlockTable

這裏是我的功能的網頁塊...

 <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 

...包含了所謂的「名」,我想插入,將帶你到Salesforce頁面,以查看該項目的超鏈接字段。

因此,首先我需要能夠確定該字段是否是自定義對象名稱字段,其次是輸出超級鏈接而不是標籤。

如果有人有任何想法,我會非常感激。

感謝您花時間閱讀本文。

回答

2

您是否考慮在APEX控制器/擴展中執行此邏輯?執行查詢後,您可以迭代結果,確定您希望每個超鏈接的內容,然後填充公開給Visualforce頁面的地圖,該地圖由搜索結果(推測爲ID)和值將是超鏈接。然後在您的Visualforce迭代器中,您可以執行映射[SearchResult.Id]或任何密鑰最終結果。

+0

事情是,我不想超鏈接爲每個值,只有它是自定義對象的名稱字段。如何爲field ='Name'編碼,以及如何從渲染文本轉換爲渲染超鏈接?你是否建議地圖會返回超鏈接的標記? – Flippsie

+0

我認爲對您而言,如果我正在閱讀正確的問題,您可能需要超鏈接或不需要任何東西。如果是這種情況,您可以利用上的「rendered」屬性來決定是否顯示或隱藏基於Name值爲空的超鏈接。 –

+0

不,我總是希望輸出字段值,但是當字段是自定義對象名稱字段時,我希望它是超鏈接到該自定義對象中的相關項目。請記住它正在輸出用戶輸入到字段集的字段,因此它可以是任何字段。 – Flippsie

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> 
相關問題