2012-01-26 4 views
8

내가 항상 사이트의 기존 필드에 연결하는 SPFieldLink를 사용하여 예제를 찾을 코드 (C#)를 사용하여 contenttypes를 만들고필드를 contenttype에 추가 할 때 fieldLinks를 사용해야하는 이유는 무엇입니까?

contentType.FieldLinks.Add() 

를 통해이를 추가하는 방법에 대한 문서를 검색하지만 추가하는 방법도있다 필드를 직접. 단순히 필드를 추가해서는 안되는 이유가 있습니까?

contentType.Fields.Add(SpField()) 

! 사전에

덕분에

답변

5

내가 지금까지 발견과 같은 간단한 이유가있을 것 같다 : 그것은 단지 ContentTypes에서 작동하지 않습니다. 필드를 직접 추가하려고하면 SP2010에서 예외가 발생합니다.

이 기능은 목록과 관련되지 않은 필드 컬렉션에서는 사용할 수 없습니다.

필자는이 사실을 (스페인어 재판도) 기대하지 않았지만, 그렇게 할 수없는 것 같습니다.

5

목록에서 XML을 보는 것이 도움이 될 수 있습니다.

다음
<FieldRefs> 
    <FieldRef ID="{7662cd2c-f069-4dba-9e35-082cf976e170}" Name="Body" /> 
    <FieldRef ID="{6a09e75b-8d17-4698-94a8-371eda1af1ac}" Name="Expires" /> 
</FieldRefs> 

가 발표 목록에 대한 XML입니다 : :

<Fields> 
    <Field ID="{7662cd2c-f069-4dba-9e35-082cf976e170}" Type="Note" RichText="TRUE" RichTextMode="FullHtml" IsolateStyles="TRUE" NumLines="15" Name="Body" DisplayName="$Resources:core,camlid2;" Sortable="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Body"> 
    </Field> 
    <Field ID="{6a09e75b-8d17-4698-94a8-371eda1af1ac}" Type="DateTime" Name="Expires" DisplayName="$Resources:core,camlid3;" Format="DateOnly" FromBaseType="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Expires"> 
    </Field> 
</Fields> 

목록이 필드를 여기

은 공지 콘텐츠 형식의 XML입니다. 콘텐츠 형식에는 FieldRef가 있습니다.

정확하게 맞는지 확실하지 않지만 항상 클래스와 인터페이스 또는 추상 클래스 간의 차이점으로 설명합니다. 컨텐트 유형은 목록에 대한 정의이지만 인터페이스처럼 데이터 나 기능을 포함하지 않습니다. 필드에는 데이터 및 기능이 포함되어 있으므로 (목록에서 분리 된) 내용 유형에는 필드가 없으므로 FieldRef가 있습니다. YMMV - 그게 항상 내가 그들을 똑바로 유지하는 데 도움이.

관련 문제