Не удается обновить элемент sharepoint при проверке полей в существующем списке внутри делегатов - PullRequest
0 голосов
/ 24 августа 2011

У меня был следующий код внутри делегата для создания полей

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, не дали никаких положительных результатов. Где трюк? Я буду признателен за любую помощь. Спасибо.

1 Ответ

0 голосов
/ 24 августа 2011

Трудно угадать, что именно вы делаете, анализируя части кода, которые вы предоставляете.

  1. Но я думаю, что вы загружаете элемент из списка
  2. затем вы модифицируете список, добавляя новое поле.
  3. А потом вы обновляете предмет.

Теперь проблема, я думаю, в том, что у вас остается та же ссылка на элемент после изменения списка. Чтобы решить эту проблему, необходимо перезагрузить элемент после внесения изменений в список, а затем вызвать обновление для этого элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...