2009-08-07 35 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是未触及的。

相关问题