2016-12-17 84 views
0

我的網站有這樣的結構:如何從層次結構轉型訪問文檔附件

Products 
    category 1 
     item 1 
      item 1 attachments 
    category 2 
     item 2 
      item 2 attachments 

我已經成功地寫了一個層次轉變,顯示在頂層頁面上的數據。我不能爲我的生活弄清楚如何訪問每個文檔的附件。

任何人有什麼想法?

回答

0

我想你是指你在屬性 - >附件部分添加的未分類的附件。在這種情況下宥可以按照你的轉換控制寄存器:

<%@ Register Src="~/CMSInlineControls/DocumentAttachments.ascx" TagName="DocumentAttachments" TagPrefix="cms" %> 

而且使用這樣的:

<cms:DocumentAttachments ID="ucDocAttachments" runat="server" TransformationName="cms.root.attachment" Path='<%# Eval("NodeAliasPath") %>' /> 
1

如果你在談論集團的附件(這是當你在你的頁面有一個場鍵入使用附件數據類型),然後爲了訪問轉換中的附件,您需要編寫custom macro(使用文本/ XML轉換時)或custom transformation方法。兩者都可以很容易地完成。得到您的附件的代碼本身可以是這樣的:

public ObjectQuery<AttachmentInfo> GetAttachmentsFromField(string className, int documentID, string attachmentColumnName) 
{ 
    // get class info  
    var classInfo = new FormInfo(DataClassInfoProvider.GetDataClassInfo(className).ClassFormDefinition); 
    if (classInfo != null) 
    { 
     // get attachment field definition    
     var attachmentsField = classInfo.GetFormField(attachmentColumnName); 
     if (attachmentsField != null) 
     { 
      // get attachments strored in the field by GUID 
      var attachments = AttachmentInfoProvider.GetAttachments() 
       .WhereEquals("3CCC6E6C-56F3-42EB-8385-979973D99C55", attachmentsField.Guid) 
       .And() 
       .WhereEquals("AttachmentDocumentID", documentID); 

      return attachments; 
     } 
    } 
    return null; 
} 

有了這個是非常重要的考慮,該代碼引入了對數據庫的其他幾個SQL查詢,因此應當適當地利用緩存來優化。

0

我在這段時間寫了一個pretty detailed blog post。它描述了與Enn的答案非常相似的屬性,但詳細說明了爲什麼要做特定的事情。