6

リストが更新されたときに発生するeventreceiverを作成できますか?eventreceiverに指定する必要のあるlisttemplateidにより、コードは1種類のリストに固有のものになります。サイトのすべてのリストのイベントに対してコードを実行させたい場合はどうなりますか?

4

1 に答える 1

8

私にはまったく同じ要件があります。

たぶん、イベントレシーバーをシステムに接続することは可能ですContentType(すべてのコンテンツタイプは、ID 0xでそれを継承します)

FeatureReceiverを使用して機能を作成し、プログラムでシステムコンテンツタイプに追加することで、それが可能かどうかを確認します。ここにいくつかの詳細。

解決策を見つけるための私の道

了解しました。コンソールアプリでテストを行いました。

  1. EventReceiver システム(0x)に追加しようとしました。すべての子要素を更新するメソッドContentType.Update(true、false)が呼び出されました。また、システムもContentType更新されませんでした。これらのcontentTypesをReadOnly||で変更できないことがわかりました Sealed属性をに設定TRUE
  2. EventReceiverをアイテム(0x01)に追加しようとしましたContentType。ここからわかるように、すべてContentTypesはまだその1つから継承します(ContentType階層を参照)。システムから継承するカスタムデプロイされたコンテンツタイプが存在する場合がありますが、GUIで作成されたものは存在しません。このコンテンツタイプを更新すると、すべての子が本当に更新されます(またはContentTypesを除くすべてのコンテンツタイプ)ReadOnlySealed

グローバルEventReceiverをすべてのアイテムにアタッチする方法

したがって、機能するソリューションは次のようになります。

  1. すべてのリストを繰り返し、それらのコンテンツタイプが必要な場合は、falseに設定Readonlyまたは設定します。SealedEventReceivers
  2. EventReceiverリスト内の既存のコンテンツタイプにあなたを追加します( SPList.ContentTypes
  3. EventReceiverをID0x01のContentType(SPWeb.ContentTypes)に追加して、新しいリストにEventReceiverが自動的に追加されるようにします。新しく作成されたコンテンツタイプも継承しEventReceiversます。また、すべてのサブWebContentTypesはを継承しEventReceiversます。

3つのステップはすべて、コンソールアプリケーションまたは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はローカライズされていますが、{、、、 ...}は、コンテンツタイプにいくつかのイベントレシーバーを追加したことを意味します。ご覧のとおり、ReadonlyまたはSealed属性Falseを持つものは変更されていません。

于 2009-08-07T09:13:49.937 に答える