إرفاق EventReceiver إلى جميع قوائم موقع SharePoint
-
12-09-2019 - |
سؤال
هل يمكننا كتابة EventReceiver التي يتم إطلاقها عند تحديث أي قائمة. يقوم ListTemPlateID بحيث يتعين علينا تحديده للحصول على EventReceiver يجعل Code Penefic الخاص بنا إلى سلالة واحدة من القوائم. ماذا لو أرغبنا في تنفيذ التعليمات البرمجية للأحداث في جميع قوائم الموقع؟
المحلول
لدي نفس المتطلبات الدقيقة.
ربما من الممكن إرفاق جهاز استقبال الحدث إلى النظام ContentType
(جميع أنواع المحتويات ترث ذلك واحد، مع ID 0X)
أتحقق من ذلك ما إذا كان ذلك ممكنا من خلال إنشاء ميزة بمثابة ميزة، وإضافته برمجيا إلى نوع محتوى النظام. بعض التفاصيل هنا.
طريقي في العثور على حل
AllRight، فعلت بعض الاختبارات مع تطبيق Console.
- حاول أن أضيف
EventReceiver
النظام (0x). وبعد استدعاء الأسلوب contenttype.update (صحيح، خطأ) الذي يقوم بتحديث جميع عناصر الأطفال - ولا النظامContentType
تحديث، ولا تشايلدز. وبعد اتضح أنه لا يمكنك تعديل تلك contenttypes معReadOnly
||Sealed
سمة مجموعة علىTRUE
- حاول إضافة EventReceiver إلى البند (0x01)
ContentType
. وبعد كما رأينا من هنا، كل شيءContentTypes
لا يزال يرث من ذلك واحد (انظر contenttype التسلسل الهرمي). قد يكون هناك أنواع محتوى مخصصة التي ترثت من النظام، ولكن ليس تلك التي صنعت في واجهة المستخدم الرسومية. تحديث نوع المحتوى هذا محدث حقا كل الأطفالContentTypes
(جميع أنواع المحتوى باستثناء تلكReadOnly
أوSealed
)
كيفية إرفاق EventReceiver عالمي لجميع العناصر
وبالتالي فإن الحل الذي سيعمل سيبدو هكذا:
- تكرار جميع القوائم، مجموعة
Readonly
أوSealed
إلى False إذا كنت تريد أن تكون أنواع المحتوى هذه معكEventReceivers
. - إضافة الخاصة بك
EventReceiver
إلى أنواع المحتوى الموجودة في القوائم (SPList.ContentTypes
) - أضف EventReceiver إلى ContentType (
SPWeb.ContentTypes
) مع ID 0x01 حتى قوائم جديدة تحصل على 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
السمة كاذبة لا يمولة.