سؤال

أحاول القيام ببعض المعالجات بعد إنشاء عنصر، لكن يتم إجراء المعالجة مرتين لأنه في التعليمات البرمجية بعد إنشاء العنصر، فأنا أحديثها، لذلك يتم تشغيل Reciever الحدث مرتين: أولا عندما أضيف العنصروالثاني عندما قمت بتحديثه. إليك الرمز: giveacodicetagpre.

إذا كيف يمكنني إيقاف الحريق الثاني من الأفعال الناتجة عن item.update () بعد الاحتفاظ بالنار الأول لأنني بحاجة إلى الاستمرار في تطبيق معالجتي؟

PS: في حالة تحديث Listections موجود. يتم تشغيل Itempdated مرتين أيضا !!

btw: هذا الرمز غير مكتوب في الطريقة المكلفة ولا في الطريقة المختصة، في الواقع هو الرمز في عنصر تحكم المستخدم لتطوير WebPart.

هل كانت مفيدة؟

المحلول

ربما يكون لديك مستقبل الحدث الخاص بك مسجلا مرتين.استخدم PowerShell لمعرفة ذلك. giveacodicetagpre.

نصائح أخرى

تعطيل إطلاق الحدث قبل تحديث العنصر الخاص بك. giveacodicetagpre.

لاحظ أن هذا قد يسبب مشاكل عند طرقا item.update () استثناء، تاركا إيقاف تشغيل EventFiring .. يمكنك استخدام TRY / CAMK لحل هذا.

آمل أن أتمكن من المساعدة :)

هل لي أن أعرف أين كان هذا الرمز الخاص مكتوبا؟هل يتم تشغيله () أو عناصر ().هناك اختلاف بين هذه اثنين.في OdgeDedded () سيتم إطلاق جهاز استقبال الحدث إلا عند إضافة العنصر الجديد في جهاز استقبال الأحداث () سيتم إطلاق النار كلما يتم تحديث العنصر بغض النظر عن كيفية إجراء مرات التحديث.أيضا أقترح عليك القيام به الأشياء التالية.

إما في IdeDDed أو Infupdate، يمكنك العثور على هذا الرمز متاح افتراضيا. giveacodicetagpre.

تعليق هذه التعليمات البرمجية ولتحديث استخدام الأسلوب التالي ولا تستخدم

item.update ()؛مباشرة.

استخدم الطريقة التالية لتحديثها. giveacodicetagpre.

شكرا

لهذا،

تحتاج إلى تعيين نطاق الميزة= الويب وكذلك تحتاج إلى تعيين النطاق في ميزة .template.xml أيضا.

يمكنك أن ترى الحل هنا. http://asharepointsolutions.blogspot.in/sharepoint-event-handler-firing-twice.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top