1

我的環境是SharePoint 2010和VS 2010在SharePoint中自動添加標籤來上傳文件

我已經有一個我使用的是開箱即​​用的文檔庫,我想知道我怎麼能一個標籤或關鍵字添加到METADATA列。

我在所有子網站中使用相同的文檔庫,因此想用當前網站的名稱(即,如果它在子網站中使用,該子網站的名稱將是標籤)標記上載的文檔。

我是否需要構建自定義文檔庫或附加到現有文檔庫的某種附加Web部件?

如果您可以提供一些代碼示例,如果有的話,將不勝感激。

感謝,

KS

回答

0

如果你是從頭開始,你可以創建基於內容類型文件(子內容類型文件)的構建自定義的內容類型開始。爲您的內容類型添加一個自定義字段。有關創建內容類型的詳細信息請看這裏:http://msdn.microsoft.com/en-us/library/gg295290.aspx

內容類型也可以有一個ItemAdding自定義事件接收器,ItemUpdated等請看下面的XML:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <ContentType ID="0x010100xxxxxx" 
Name="MyContentType" 
Group="My custom group" Version="0" Inherits="True" Overwrite="TRUE" > 
    <FieldRefs> 
    <FieldRef ID="{AC8A823D-EB2F-4D4D-8BF0-14CACA509539}" Name="myMetadataField" Required="FALSE" /> 
    </FieldRefs> 
    <XmlDocuments> 
     <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/events"> 
     <spe:Receivers xmlns:spe="http://schemas.microsoft.com/sharepoint/events"> 
      <Receiver> 
      <SequenceNumber>1010</SequenceNumber> 
      <Name>HandoverOffshore_ItemAddedReceiver</Name> 
      <Type>ItemAdded</Type> 
      <Assembly>MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79315a88caec227a</Assembly> 
      <Class>MyAssembly.CustomEventReceivers</Class> 
      </Receiver> 
     </spe:Receivers> 
     </XmlDocument> 
    </XmlDocuments> 
    </ContentType> 
</Elements> 

那麼你就必須創建事件接收器類女巫處理自定義事件:

public class HandoverOffshoreEventReceivers : SPItemEventReceiver 
{ 
     public override void ItemAdded(SPItemEventProperties properties) 
     { 
// your code for updating metadata field here... 
     } 
} 

然後,您將其部署到您的網站集,並將此內容類型添加到所有庫。還將其設置爲所有庫中的默認內容類型。

如果您要創建多個庫,則應該考慮根據此內容類型創建自定義庫定義。

如果您希望爲現有文檔觸發此自定義事件,則必須將其內容類型更改爲您在此創建的新內容類型。

請注意,文檔庫內容類型是網站集內容類型的子內容類型。