我的环境是 sharepoint 2010 和 vs 2010。
我已经有一个正在使用的 OOTB 文档库,我想知道如何将标签或关键字添加到 METADATA 列。
我在所有子站点中使用相同的文档库,因此想用当前站点的名称标记上传的文档(即,如果它在子站点中使用,则该子站点的名称将是标记)。
我是否需要构建自定义文档库或某种附加到现有文档库的附加 Web 部件?
如果您可以提供一些代码示例,如果有的话,将不胜感激。
谢谢,
KS
我的环境是 sharepoint 2010 和 vs 2010。
我已经有一个正在使用的 OOTB 文档库,我想知道如何将标签或关键字添加到 METADATA 列。
我在所有子站点中使用相同的文档库,因此想用当前站点的名称标记上传的文档(即,如果它在子站点中使用,则该子站点的名称将是标记)。
我是否需要构建自定义文档库或某种附加到现有文档库的附加 Web 部件?
如果您可以提供一些代码示例,如果有的话,将不胜感激。
谢谢,
KS
如果您从头开始,您可以基于内置内容类型 Document(Document 的子内容类型)创建自定义内容类型。将自定义字段添加到您的内容类型。有关创建内容类型的更多信息,请参见此处: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...
}
}
然后将其部署到您的网站集,并将此内容类型添加到您的所有库中。还将其设置为所有库中的默认内容类型。
如果您要创建许多库,则应考虑基于此内容类型创建自定义库定义。
如果您希望为现有文档触发此自定义事件,则必须将其内容类型更改为您在此处创建的新内容。
请注意,文档库内容类型是网站集内容类型的子内容类型。