我们能不能写一个事件接收器,当任何列表更新时都会触发。我们必须为eventreceiver指定的listtemplateid使得我们的代码特定于一种列表。如果我们想要为所有站点列表上的事件执行代码,该怎么办?
发布于 2009-08-07 09:13:50
我也有同样的要求。
也许可以将事件接收器附加到系统ContentType (所有内容类型都继承该类型,id为0x)
我会通过创建一个带有FeatureReceiver的功能并以编程方式将其添加到系统内容类型来检查这是否可行。一些细节here。
我的解决方案之路
好吧,我用控制台应用程序做了一些测试。
EventReceiver 添加到系统(0x)。调用方法ContentType.Update(true,false),它更新所有子元素-,也不更新System ,也不更新。原来,您不能修改那些将ReadOnly || Sealed属性设置为TRUEContentType添加到项(0x01) ContentType中。从这里可以看出,所有的ContentTypes仍然继承自那个(参见ContentType hierarchy)。可能存在从系统继承的自定义部署内容类型,但不存在在GUI中创建的内容类型。更新此内容类型会真正更新所有子ContentTypes (除ReadOnly或Sealed)之外的所有内容类型
如何将全局EventReceiver附加到所有项目
因此,一个可行的解决方案将如下所示:
SPList.ContentTypes)EventReceivers.SPWeb.ContentTypes)中的现有内容类型进行EventReceivers.Readonly或Sealed设置为false,以便新列表自动添加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的属性是未被触及的。
https://stackoverflow.com/questions/1243406
复制相似问题