在检查委托内现有列表上的字段时无法更新sharepoint项

时间:2011-08-24 08:09:13

标签: sharepoint

我在委托中有下一个代码来创建字段

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 :(得分:0)

通过分析您提供的代码部分,有点难以猜测您的确在做什么。

  1. 但我想你从列表中加载项目
  2. 然后通过添加新字段来修改列表。
  3. 然后你更新项目。
  4. 现在,我想问题是,在列表更改后,您仍然对该项目具有相同的引用。 要解决此问题,您必须在列表上进行修改后重新加载项目,然后在此项目上调用update。