Как вы связываете получателя событий с * определенным * пользовательским типом контента? - PullRequest
3 голосов
/ 18 февраля 2009

Я создал приемник событий и добавил его в GAC.

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

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

Пока у меня есть:

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

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

Ответы [ 2 ]

8 голосов
/ 18 февраля 2009

Чтобы привязать получатель события к определенному типу контента, вы используете элемент XmlDocuments файла элементов типа контента. Вот довольно эксклюзивный отрывок из моей будущей книги «Создание пользовательского интерфейса SharePoint» :

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

(...)

Присоединение приемников событий к типам контента с использованием функций

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

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

Ответ? Приемники событий в типах контента определяются в другом разделе файла элементов. Снова мы смотрим на XmlDocuments и третий встроенный приемник типа XmlDocument. XmlDocument Receiver находится в пространстве имен http://schemas.microsoft.com/sharepoint/events. Если вы хотите увидеть Receiver 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>

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

0 голосов
/ 23 декабря 2010

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

...