У меня был следующий код внутри делегата для создания полей
delegate(SPList list)
{
list.Fields.Add(...);
//I teared off the other same strings
}
Я вызвал этот код следующим образом
modifyFunction.Invoke(list);
//modifyFunction is a previous delegate, that was declared like
//delegate void ModifyList(SPList list);
Итак, все было хорошо, когда я пытаюсь обновить элемент в этом списке.
Но вскоре мне пришлось динамически добавлять поля в список. Итак, я изменил свой делегат как
delegate(SPList list)
{
CheckMethod(list);
}
void CheckMethod(SPList list)
{
if (!list.Fields.ContainsField(...))
{
list.Fields.Add(...);
}
}
После этой модификации (в коде больше не было изменений) при попытке обновить элемент из этого списка у меня следующее исключение
Invalid data has been used to update the list item. The field you are trying to update may be read only
Такие решения, как SPWeb.AllowUnsafeUpdates или SPSecurity.RunWithElevatedPrivileges, не дали никаких положительных результатов. Где трюк? Я буду признателен за любую помощь. Спасибо.