2009-08-07 31 views

回答

8

我有同樣的確切要求。

也許是可能的事件接收器連接到系統ContentType(所有內容類型繼承之一,ID 0X)

I`d檢查,如果可能的話用一個FeatureReceiver創建功能和編程方式將它添加到系統內容類型。一些細節here

我找到一個解決方案

路徑還好吧,我做了一些測試與控制檯應用程序。

  1. 嘗試添加EventReceiver到系統(0X)。被調用的方法ContentType.Update(true,false)更新所有子元素 - 也沒有系統ContentType更新,也沒有子女。原來,你不能用ReadOnly ||修改這些contentType Sealed屬性設置爲TRUE
  2. 試圖將EventReceiver添加到項(0x01)ContentType。從這裏可以看出,所有的ContentTypes仍然從那個繼承(見ContentType hierarchy)。可能存在從System繼承的自定義部署內容類型,但不包括在GUI中創建的內容類型。更新此內容類型確實更新了所有的孩子ContentTypes(所有內容類型,除了那些ReadOnlySealed

如何在全球EventReceiver附加到所有項目

因此,一個解決方案,將工作應該是這樣的:

  1. 迭代所有的列表,如果你希望這些內容類型與您EventReceivers設置ReadonlySealed爲false。
  2. 在列表(SPList.ContentTypes
  3. 添加EventReceiver到的ContentType(SPWeb.ContentTypes)與ID添加您EventReceiver現有的內容類型0×01所以新名單得到EventReceiver自動添加。新創建的內容類型也將繼承EventReceivers。此外,所有子網站ContentTypes繼承EventReceivers

所有這三個步驟可能是控制檯應用程序或PowerShell腳本。或網站集全功能與FeatureReceiver

結果

PS C:\Documents and Settings\Administrator> $web.contentTypes |ft id, name, EventReceivers, readonly, sealed 

Id      Name     EventReceivers       ReadOnly     Sealed 
--      ----     --------------       --------     ------ 
0x      Sistēma     {}          False     True 
0x007F1DD730DB144C84... Darba kārtības vēsture {}           True     True 
0x01     Ieraksts    {, , , ...}        False     False 
0x01003420C661289843... Darba kārtības ieraksts {, , , ...}        False     False 
0x0101     Dokuments    {, , , ...}        False     False 
0x010100629D00608F81... Office datu savienoj... {}           True     False 
0x010100B4CBD48E029A... Universālais datu sa... {}           True     False 
0x010101    Veidlapa    {, , , ...}        False     False 
0x010102    Attēls     {, , , ...}        False     False 
0x010104    Nezināms dokumenta tips {}           True     False 
0x010105    Lapu šablons   {, , , ...}        False     False 
0x010107    Lietotāja darbplūsma... {, , , ...}        False     False 
0x010108    Wiki lapa    {, , , ...}        False     False 
0x010109    Pamatlapa    {, , , ...}        False     False 
0x01010901    Web daļu lapa   {, , , ...}        False     False 
0x01010A    Saistīt ar dokumentu {, , , ...}        False     False 
0x01010B    Dublinas pamata kolo... {, , , ...}        False     False 
0x0102     Notikums    {, , , ...}        False     False 
0x0103     Diskutējamais jautājums {, , , ...}        False     False 
0x0104     Paziņojums    {, , , ...}        False     False 
0x0105     Saite     {, , , ...}        False     False 
0x0106     Kontaktpersona   {, , , ...}        False     False 
0x0107     Ziņojums    {, , , ...}        False     False 
0x0108     Uzdevums    {, , , ...}        False     False 
0x0108007122AD6D76CD... Darba kārtības uzdevums {, , , ...}        False     False 
0x010801    Darbplūsmas uzdevums {, , , ...}        False     False 
0x010802    Administratīvs uzdevums {, , , ...}        False     False 
0x0109     Darbplūsmas vēsture  {, , , ...}        False     False 
0x010A     Person     {, , , ...}        False     False 
0x010B     SharePointGroup   {, , , ...}        False     False 
0x010C     DomainGroup    {, , , ...}        False     False 
0x0110     Ziņa     {, , , ...}        False     False 
0x0111     Komentārs    {, , , ...}        False     False 
0x0116     Tālo Austrumu līgums {, , , ...}        False     False 
0x0120     Mape     {}          False     True 
0x012001    RootOfList    {}          False     True 
0x012002    Diskusija    {, , , ...}        False     False 

對不起,我的WSS是局部的,但{,,,...}意味着我添加了幾個eventreceivers內容類型。正如你可以看到那些ReadonlySealed屬性False是未觸及的。

相關問題