استدعاء متكرر لطريقة تحديث سبليستيتم عند استدعاؤها من عنصر استقبال الحدث

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/97683

سؤال

لقد سقطت في مشكلة خطيرة حول SPListItem طريقة التحديث.عندما جعل استقبال الحدث لاعتراض SPListItem تغيير أو تحديث مع SPItemEventReceiver ItemUpdated method, ، يتم استدعاء الحدث بشكل متكرر.

المصدر:

  public override void ItemUpdated(SPItemEventProperties properties)
   {
    base.ItemUpdated(properties);

    SPList list = properties.List;

    SPListItem item = properties.ListItem;

    if ("Oui" == properties.ListItem["Envoyé vers le Directeur"].ToString())
    {
        SPListItem copyItem = item;

        MoveItemsToFolder(properties, list, "Dossiers envoyés Rédaction", copyItem);

        item["Service"] = "direction";
        item.Update();

        string[] cols = { "Envoyé vers le Directeur", "Archivé" };
        HideColumns(list, cols);

    }
    else if ("Oui" == properties.ListItem["Validé par le Directeur"].ToString())
    {

        SPListItem copyItem = item;

        MoveItemsToFolder(properties, list, "Direction", copyItem);

        item["Service"] = "bureauOrdre";
        item.Update();

        string[] cols = { "Validé par le Directeur", "Envoyé vers le Directeur" };
        HideColumns(list, cols);
    }
    else if ("Oui" == properties.ListItem["Archivé"].ToString())
    {

        SPListItem copyItem = item;

        MoveItemsToFolder(properties, list, "Archives", copyItem);

        item["Service"] = "Archive";
        item.Update();

        string[] cols = { "Validé par le Directeur", "Envoyé vers le Directeur" };
        HideColumns(list, cols);
    }
    else
    {

        item["Service"] = "redaction";
        item.Update();

    }

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

المحلول

الحل هو استخدام SPItemEventReceiver.EnableEventFiring مسن

يمكنك أن تفعل

var eventRecTemp = new SPItemEventReceiver();
eventRecTemp.EnableEventFiring = false;
//update
eventRecTemp.EnableEventFiring = true;

أو كما هذا يتحدث بلوق عن ، وتحويلها إلى نطاق باستخدام IDisposable.

لقد استخدمت طريقة النطاق في ItemUpdated مشروع ثقيل وعملت بشكل جيد.

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