Я новичок в Sharepoint и в настоящее время поддерживаю устоявшееся решение с ошибкой. К сожалению, я не могу решить проблему. Я получаю SPException с ErrorCode 2130575305 в событии ItemAdded, когда пытаюсь использовать метод properties.ListItem.Update ().
Похоже, что существует проблема при обновлении элемента вскоре после его обновления?
Я перепробовал все, что нашел в Интернете, от использования метода ItemAdding над allowunsafeupdates до отключения событий, но ничего не получалось, теперь у меня кончился пар
Небольшой фрагмент программного кода:
SPListitem itm = list.GetItems(query).Add();
// all single line of text
itm["property"] = anotheritem["property" + "something" + itm["property"];
itm.Update();
и потом в переопределенном ItemAdded:
SPListItem itm = properties.ListItem;
itm["anotherproperty"] = "something different";
itm.Update(); // <- this throws the error
Исходное сообщение об ошибке на немецком языке, поэтому оно мало чем вам поможет, но в нем говорится что-то вроде «SPException, пожалуйста, вернитесь в браузер и попробуйте снова», что в любом случае не поможет.
Кроме того, я не могу использовать try catch в коде, так как это похоже на веб-исключение?
Извините, но я не смог попробовать ваш ответ вчера.
он не работает, к сожалению, в свойствах нет списка, только список, и даже если я знаю, какой список вызывает событие itemadded, и перейдите к нему через lists["listname"].getitembyid(properties.listitem.id)
, он не будет работать.
разве «захват свежей копии» точно не то, что я сделал, написав splistitem itm = properties.listitem;
уже?
Есть ли способ «освободить» элемент в начале itemAdded и использовать его позже?
public override void ItemAdded(SPItemEventProperties properties)
{
SPListItem itm = properties.ListItem;
itm["somefield"] = "sometext";
itm.Update(); // <- error, itm.SystemUpdate() throws the same error btw.
base.ItemAdded(properties);
}
Я также прочитал справку по msdn, она только говорит мне об ошибке, но не о том, как ее устранить, поэтому она не сильно помогла.
Об ответе Брайана: если itemadded уже является синхронным вызовом, проблем быть не должно?