【问题标题】:Attach EventReceiver to all lists of a sharepoint site将 EventReceiver 附加到共享点站点的所有列表
【发布时间】:2010-11-17 14:56:18
【问题描述】:

我们能否编写一个在任何列表更新时触发的事件接收器。 我们必须为 eventreceiver 指定的 listtemplateid 使我们的代码特定于一种列表。如果我们想让代码为所有站点列表上的事件执行怎么办?

【问题讨论】:

    标签: .net sharepoint moss event-receiver


    【解决方案1】:

    我也有同样的要求。

    也许可以将事件接收器附加到系统ContentType(所有内容类型都继承那个,id 0x)

    我会通过使用 FeatureReceiver 创建功能并以编程方式将其添加到系统内容类型来检查这是否可行。一些细节here.

    寻找解决方案的路径

    好的,我用控制台应用做了一些测试。

    1. 尝试将EventReceiver 添加到系统 (0x)。调用方法 ContentType.Update(true,false) 更新所有子元素 - System ContentType 也没有更新,也没有子元素。事实证明,您无法使用 ReadOnly || 修改这些内容类型。 Sealed 属性设置为 TRUE
    2. 尝试将 EventReceiver 添加到项目 (0x01) ContentType。从这里可以看出,所有ContentTypes 仍然继承自那个(参见ContentType hierarchy)。可能有从 System 继承的自定义部署的内容类型,但不是那些在 GUI 中创建的内容类型。更新此内容类型真正更新了所有子 ContentTypes(除 ReadOnlySealed 之外的所有内容类型)

    如何将全局 EventReceiver 附加到所有项目

    所以可行的解决方案如下所示:

    1. 迭代所有列表,将ReadonlySealed 设置为false,如果您想要这些内容类型EventReceivers
    2. 将您的 EventReceiver 添加到列表中的现有内容类型 (SPList.ContentTypes)
    3. 将 EventReceiver 添加到 ID 为 0x01 的 ContentType (SPWeb.ContentTypes),以便新列表自动添加 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 已本地化,但 {, , , ...} 表示我向内容类型添加了多个事件接收器。如您所见,那些具有 ReadonlySealed 属性为 False 的人没有受到影响。

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多