6
我們可以編寫一個在更新任何列表時觸發的事件接收器。 我們必須爲eventreceiver指定的listtemplateid使我們的代碼具有特定的列表特徵。如果我們想讓代碼執行所有網站列表上的事件,該怎麼辦?將EventReceiver附加到SharePoint站點的所有列表
我們可以編寫一個在更新任何列表時觸發的事件接收器。 我們必須爲eventreceiver指定的listtemplateid使我們的代碼具有特定的列表特徵。如果我們想讓代碼執行所有網站列表上的事件,該怎麼辦?將EventReceiver附加到SharePoint站點的所有列表
我有同樣的確切要求。
也許是可能的事件接收器連接到系統ContentType
(所有內容類型繼承之一,ID 0X)
I`d檢查,如果可能的話用一個FeatureReceiver創建功能和編程方式將它添加到系統內容類型。一些細節here。
路徑還好吧,我做了一些測試與控制檯應用程序。
EventReceiver
到系統(0X)。被調用的方法ContentType.Update(true,false)更新所有子元素 - 也沒有系統ContentType
更新,也沒有子女。原來,你不能用ReadOnly
||修改這些contentType Sealed
屬性設置爲TRUE
ContentType
。從這裏可以看出,所有的ContentTypes
仍然從那個繼承(見ContentType hierarchy)。可能存在從System繼承的自定義部署內容類型,但不包括在GUI中創建的內容類型。更新此內容類型確實更新了所有的孩子ContentTypes
(所有內容類型,除了那些ReadOnly
或Sealed
)因此,一個解決方案,將工作應該是這樣的:
EventReceivers
設置Readonly
或Sealed
爲false。SPList.ContentTypes
)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內容類型。正如你可以看到那些Readonly
或Sealed
屬性False是未觸及的。