Sharepoint 2013- обновление метаданных документа с использованием события itemupdating или itemupdated не работает

Я пытаюсь обновить пользовательские метаданные для документа, когда документ добавляется в библиотеку с помощью события обновления элемента, но он не работает. Пользовательское приложение aspx использует элемент href для указания URL-адреса документа. Если щелкнуть по нему, откроется окно проводника Windows, аналогичное представлению обозревателя OOB sharepoint 2013. Теперь, когда пользователь копирует документ из библиотеки 1(говорит, что живет на сайте 1 в sitecollection1) в библиотеку 2(живет на сайте 2 в sitecollection2) с помощью опции копирования и вставки, мне нужно очистить некоторые метаданные документа. Я пытаюсь предложить Лукаш для этого, но метаданные не очищаются. В режиме отладки, хотя запуск события отключен перед обновлением, я вижу, что обновленное событие вызывается еще раз, что странно. В конце мои метаданные не очищаются. Я пробовал как с обновлением, так и с обновленным событием. Любая идея? вот мой код для обновления:

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

 private void ClearNotes(SPItemEventProperties properties)
        {
            try
            {
                SPListItem listItem = properties.ListItem;


                listItem["Notes1"] = string.Empty;
                listItem["ReviewNote"] = null;


                base.EventFiringEnabled = false;
                listItem.Update(); 
            }
            catch (Exception ex)
            {
               //logging error to db
            }
            finally
            {
                base.EventFiringEnabled = true;
            }
        }

1 ответ

Решение

Я думаю, что это должно быть так.EventFiringEnable = false; Не база. ...

Вы также можете сделать это с itemupdating и Afterproperties, тогда вам не нужно отключать EventFiring и не нужно обновлять:

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

            ///...
            properties.AfterProperties["Notes1"] = string.Empty;            
        }
Другие вопросы по тегам