2011-08-24 2 views
0

필드를 만들 대리자 안에 다음 코드가 있습니다.대리인 내부의 기존 목록에서 필드를 확인하는 동안 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는 긍정적 인 결과를주지 못했습니다. 그 트릭은 어디 있습니까? 나는 어떤 도움을 주셔서 감사하겠습니다. 고맙습니다.

답변

0

제공하는 코드 부분을 분석하여 정확히 무엇을하고 있는지 추측하기는 쉽지 않습니다.

  1. 는하지만 난 당신이
  2. 는 다음 새 필드를 추가하여 목록을 modifiy 목록에서 항목을로드하는 것이 같아요.
  3. 그리고 항목을 업데이트합니다.

이제 문제는 목록이 변경된 후에도 항목에 대한 참조가 동일하다는 것입니다. 이 문제를 해결하려면 목록 수정 후 항목을 다시로드 한 다음이 항목에서 업데이트를 호출해야합니다.

관련 문제