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... 
     } 
} 

然后,您将其部署到您的网站集,并将此内容类型添加到所有库。还将其设置为所有库中的默认内容类型。

如果您要创建多个库,则应该考虑根据此内容类型创建自定义库定义。

如果您希望为现有文档触发此自定义事件,则必须将其内容类型更改为您在此创建的新内容类型。

请注意,文档库内容类型是网站集内容类型的子内容类型。