У меня есть список SharePoint, в котором я регистрирую пользовательский приемник событий ItemUpdating, но в этом решении я вижу очень странное поведение. Такое поведение возникает, если я добавляю код в приемник событий, отличный от base.ItemUpdating.Weird SharePoint ItemUpdating Behavior
Что происходит, если я отлаживаю приемник событий, я вижу, что свойства. AfterProperties имеет все значения, введенные в поле и свойства. У ListItem есть исходный элемент. Но как только ER закончит работу и перезагрузка страницы ничего не будет сохранена, и она просто вернется к тому, что было до того, как я изменил значения. Еще более странно, если я поеду и вручную настрою свойства after, похожие на ниже, оно работает, и обновления будут сохранены правильно. Таким образом, в основном приемник событий заставляет меня нести какие-либо изменения в элементе, но это не нормальное поведение для ItemUpdating. Кто-нибудь может понять, что может вызвать это?
public override void ItemUpdating(SPItemEventProperties properties)
{
var recurringBefore = properties.ListItem.TryGetValue<bool>(Constants.CommonFields.Recurring_STATIC);
var recurringAfter = Convert.ToBoolean(properties.AfterProperties[Constants.CommonFields.Recurring_STATIC]);
//This loop is the horrible fix I have done to manually update the relevant fields but this shouldn't be necessary
var item = properties.ListItem;
foreach (SPField key in item.Fields)
{
if (item[key.InternalName] != properties.AfterProperties[key.InternalName] && key.CanBeDisplayedInEditForm && properties.AfterProperties[key.InternalName] != null)
{
//looping through and setting the AfterProperties to what they already are makes them save? If I don't do this nothing saves
properties.AfterProperties[key.InternalName] = properties.AfterProperties[key.InternalName].ToString();
}
}
if (!recurringBefore && recurringAfter &&
currWfStatus == Constants.WorkflowStatus.Processed)
{
//do some stuff
}
base.ItemUpdating(properties);
}
вы пробовали вызова 'base.ItemUpdating (свойства)' в начале вашей функции переопределения вместо в конце? – Thriggle
Да, не имеет значения. –