リストが更新されたときに発生するeventreceiverを作成できますか?eventreceiverに指定する必要のあるlisttemplateidにより、コードは1種類のリストに固有のものになります。サイトのすべてのリストのイベントに対してコードを実行させたい場合はどうなりますか?
3210 次
1 に答える
8
私にはまったく同じ要件があります。
たぶん、イベントレシーバーをシステムに接続することは可能ですContentType
(すべてのコンテンツタイプは、ID 0xでそれを継承します)
FeatureReceiverを使用して機能を作成し、プログラムでシステムコンテンツタイプに追加することで、それが可能かどうかを確認します。ここにいくつかの詳細。
解決策を見つけるための私の道
了解しました。コンソールアプリでテストを行いました。
EventReceiver
システム(0x)に追加しようとしました。すべての子要素を更新するメソッドContentType.Update(true、false)が呼び出されました。また、システムもContentType
更新されませんでした。これらのcontentTypesをReadOnly
||で変更できないことがわかりましたSealed
属性をに設定TRUE
- EventReceiverをアイテム(0x01)に追加しようとしました
ContentType
。ここからわかるように、すべてContentTypes
はまだその1つから継承します(ContentType階層を参照)。システムから継承するカスタムデプロイされたコンテンツタイプが存在する場合がありますが、GUIで作成されたものは存在しません。このコンテンツタイプを更新すると、すべての子が本当に更新されます(またはContentTypes
を除くすべてのコンテンツタイプ)ReadOnly
Sealed
グローバルEventReceiverをすべてのアイテムにアタッチする方法
したがって、機能するソリューションは次のようになります。
- すべてのリストを繰り返し、それらのコンテンツタイプが必要な場合は、falseに設定
Readonly
または設定します。Sealed
EventReceivers
EventReceiver
リスト内の既存のコンテンツタイプにあなたを追加します(SPList.ContentTypes
)- 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 に答える