في ItemUpdating قم بتعديل الخاصية
-
10-12-2019 - |
سؤال
عندي مشكلة مع هذا الحدثما هو هدفي:أرغب في تحديث إحدى الخصائص بناءً على معايير قليلة، لذلك أريد ملء الحقل "أ" إذا كان الحقل "أ" فارغًا والحقل "ب" ليس فارغًا والحقل "ج" ليس فارغًا أيضًا.
كيفية القيام بذلك بشكل صحيح لأنه باستخدام ItemUpdating تكون بعض الخصائص اللاحقة فارغة في بعض الأحيان أو أنها غير موجودة على الإطلاق وما إلى ذلك ..
أي نصيحة جيدة؟
فقط لأخبرك أن الأمر يتعلق شير بوينت 2007
تحديث:المشكلة هي أنني بحاجة لمقارنة القيمة السابقة والقيمة الجديدة:لذلك إذا قام شخص ما بتحديث عنصر.
السابق:العنصر الحالي :title=value1;العنوان2=القيمة1
يقوم شخص ما بالتحديث وفقًا لذلك:title=newValue
يجب أن يكون للعنصر المحدث القيمة التالية:title=newValue;title2 = newValue
في المرة القادمة بعد التحديث:title2=againANewValue;
يجب أن يكون العنصر المحدث كما يلي:title=againANewValue;title2=againANewValue;
لذلك يجب أن يظل كلا الحقلين متزامنين بغض النظر عن الحقل الذي تم تحديثه، لذلك لا أستطيع معرفة أي حقل تم تحديثه ثم أي حقل يجب تحديثه ..
هل ترى
المحلول 3
في النهاية قمت بحل مشكلتي بنفسي.
فقط عن طريق التحقق من listItem.AfterProperties["column"] ومقارنتها مع ListItem["column"] ثم تعيين القيمة مرة أخرى إلى ListItem.AfterProperties["column"]= value؛
نصائح أخرى
سؤال واحد فقط:هل هناك سبب لعدم استخدام ItemUpdated حيث سيتم تحديث كل حقلك بالمعلومات الجديدة؟
في ItemAdding، يجب عليك التحقق من كل من BeforeProperties وAfterProperties لتكون ناجحًا في هذه المهمة.
في العنصر المضاف:
title2 = title
في سير عمل ItemUpdated:
//Only when there is a change in title/title2 columns if(title != title2) { //Meaning title has changed if(title.beforeProperties.Value == title2) { title2 = title } //Meaning title2 has changed else if(title2.beforeProperties.Value == title) { title = title2 } }