ゼロから始める場合は、組み込みのコンテンツタイプ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>
次に、カスタムイベントを処理するイベントレシーバークラスwitchを作成する必要があります。
public class HandoverOffshoreEventReceivers : SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
// your code for updating metadata field here...
}
}
次に、これをサイトコレクションに展開し、このコンテンツタイプをすべてのライブラリに追加します。また、これをすべてのライブラリのデフォルトのコンテンツタイプとして設定します。
多くのライブラリを作成する場合は、このコンテンツタイプに基づいてカスタムライブラリ定義を作成することを検討する必要があります。
このカスタムイベントを既存のドキュメントに対して発生させる場合は、コンテンツタイプをここで作成した新しいドキュメントに変更する必要があります。
ドキュメントライブラリのコンテンツタイプは、サイトコレクションのコンテンツタイプの子コンテンツタイプであることに注意してください。