2009-02-18 4 views
3

Я создал приемник событий и добавил к GAC.Как связать приемник событий с * специальным * настраиваемым типом контента?

Как связать приемник событий с конкретным пользовательским типом контента?

мне нужно сделать это из файла XML:

До сих пор у меня есть:

feature.xml, который указывает на файл Elements.xml, но я не уверен в файле Elements.xml.

Как вы ссылаетесь на определенный тип контента? (У меня есть указатель для конкретного типа содержимого)

ответ

8

Чтобы связать приемник событий с определенным типом контента, вы используете элемент XmlDocuments в файле элементов типа содержимого. Вот довольно эксклюзивный отрывок из моей будущей книги "Building the SharePoint User Experience":

И, чтобы уточнить, так как я не вижу XML, который вы пытались опубликовать, вы должны добавить это в объявление типа содержимого в файле elements.xml.

(...)

Установка приемников событий для типов контента с помощью функции

Важно с крепления приемников событий, как мы только что видели, как видно, что нет никакого способа, чтобы связать приемник к типу содержимого, только к шаблону списка.

Нет, нет способов добавить получателей в отдельные списки. Однако, как мы видели в разделе «Разрешения по электронной почте» в главе «Лес списка», мы можем программно добавлять приемники событий с использованием кода. Мы можем использовать тот же метод, чтобы добавить получателей событий к типу контента, но должен быть способ сделать это, используя CAML в функции. После всего этого мы определяем тип контента, как мы увидим далее в этой главе.

Ответ? Приемники событий в типах контента определяются в другом разделе файла элементов. Снова посмотрим на XmlDocuments и третий встроенный приемник типа XmlDocument. Получатель XmlDocument находится в пространстве имен http://schemas.microsoft.com/sharepoint/events. Если вы хотите увидеть приемник XmlDocument в установке SharePoint по умолчанию, поиск файла ctypeswss.xml для типа содержимого 0x010107, в DocumentWorkflowItem:

<XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/events"> 
<spe:Receivers xmlns:spe="http://schemas.microsoft.com/sharepoint/events"> 
    <Receiver> 
    <Name>Workflow Library Item Added</Name> 
    <Type>ItemAdded</Type> 
    <SequenceNumber>1</SequenceNumber> 
    <Assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral,~CCC 
    PublicKeyToken=71e9bce111e9429c</Assembly> 
    <Class>Microsoft.SharePoint.Workflow.SPWorkflowLibraryEventReceiver</Class> 
    <Data /> 
    <Filter /> 
    </Receiver> 
… (snipped for space saving purposes 
</Receivers> 
</XmlDocument> 

Примечания В данном примере используется префикс сп: для элемента приемников. Это не обязательно с технической точки зрения, но может добавить ясность в ваш код. Как вы можете видеть, элемент Receiver следует структуре приемника событий обычного элемента, как определено в элементах. Кроме того, конечно, что получатель определен в разделе XmlDocument типа контента.

+0

Привет! Это относится и к SP 2010? Я не могу заставить мои eventreceivers срабатывать, и я уверен, что он был изменен, поскольку вы descibed – Larsi

+0

Как я могу добавить получателя в сборку контента (например, «Папка») с помощью этой техники? – Patric

+0

Папки - это типы контента, такие как что-либо еще, поэтому в определении не было бы иначе. Если у вас есть существующая папка, вам нужно будет прикрепить приемник после факта, но это немного выходит за рамки комментария. Я предлагаю вам задать новый вопрос на sharepoint.stackexchange.com. –

0

@ Larsi: То же проблема здесь. Похоже, что «Inherits» установлен в true, вызывая ошибку, а затем XmlDocuments полностью игнорируется: @ Поэтому мы исправляем это в пользовательской функции и привязываем приемники событий с использованием объектной модели.

Смежные вопросы