문제

나는 정의했다 SharePoint의 사용자 정의 목록 템플릿 유형. VSEWSS 1.3을 사용하여 설치하고 모든 것이 올바르게 행동하는 것 같습니다.

나는 의지 할 수있는 커스텀 액션을 추가했다 목록에 추가 열 (spfields)을 추가하십시오. 그러나 코드가 실행할 때마다 던져지고 인수 exception이 '예상 범위가 아닌 값.' 에러 메시지. 이 동작은 제안 된대로 사용자 정의 유형에만 국한된 것 같습니다. 이 블로그 게시물.

다음은 관련 코드입니다 (이 목록은 브라우저 인터레이스를 사용하여 생성 된 사용자 정의 목록 템플릿 유형의 인스턴스입니다).

                SPFieldType fieldType = Format2SPFieldType(format);
                SPField field = new SPField(thisList.Fields, fieldType.ToString(), fieldName);
                thisList.Fields.Add(field);

마지막 문장 (thislist.fields.add (필드))는 다음과 같은 예외를 던집니다.

   Message  "Value does not fall within the expected range."

   at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName, Boolean bThrowException)
   at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName)
   at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXmlInternal(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
   at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXml(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
   at Microsoft.SharePoint.SPFieldCollection.Add(SPField field)

Splist 항목이 기본 목록 유형 (내장 사용자 정의 목록) 인 경우 동일한 코드가 잘 실행됩니다.

거기 아무도 없나요 명시 적으로 설정 해야하는 필드 에서 CAML 그리고 사용 addfieldasxml () 메소드 이 코드가 사용자 정의 목록 템플릿 유형과 직접 작동하도록하기 위해?

업데이트: 또한 호출이 예외를 던지더라도 필드가 실제로 생성된다고 언급해야합니다!

도움이 되었습니까?

해결책

이것이 발생했다는 것이 밝혀졌습니다 thislist.schemaxml을 호출하기 때문에 splist 객체를 내가 복구 할 수없는 상태에 넣습니다! 동일한 SharePoint 목록에 대한 새로운 참조를 얻는 것과 같습니다.

다른 팁

추가하려는 필드 유형은 무엇입니까? 내부 필드 또는 사용자 정의 필드 유형입니까? 내장 필드라면

thisList.Fields.Add("DisplayName", SPFieldType.Integer, false);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top