2012-01-26 17 views
8

當我搜索有關使用代碼(C#)我使用SPFieldLink鏈接到該網站的現有場始終找不到實例創建CONTENTTYPES並通過爲什麼要在向contenttype添加字段時使用fieldLink?

contentType.FieldLinks.Add() 

添加此文檔,但也有添加一個方法字段直接。有沒有一個很好的理由,我不應該簡單地添加字段使用

contentType.Fields.Add(SpField()) 

?!?

在此先感謝

回答

5

似乎有像我發現現在原因很簡單:它只是不上CONTENTTYPES工作。當試圖直接添加字段時,SP2010會向我發送例外情況:

此功能不適用於與列表無關的字段集合。

我絕對沒有想到這(西班牙宗教裁判所),但它似乎並不可能。

5

這可能有助於查看XML列表。

下面是公告內容類型的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> 

列表有字段。內容類型具有FieldRefs。

我不確定這是否完全正確,但我總是將它描述爲類和接口或抽象類之間的區別。內容類型是列表的定義,但是與界面一樣,它不包含任何數據或功能。由於字段包含數據和功能,內容類型(從列表中解除關聯)沒有字段,因此它們具有FieldRefs。 YMMV - 但這總能幫助我保持直線。

相關問題