WSS3SDK之 欄位和字段引用

2021-04-24 12:32:59 字數 1575 閱讀 8861

本節將討論欄位和字段引用間的區別。

欄是乙個欄位或乙個字段引用

在各種wss 3.0架構(如**,列表或內容型別定義)中,欄可以用field元素或fieldref元素(內容型別)來表示。

**和列表欄在**和列表定義中以field元素來表示。然而,在內容型別定義裡**和列表欄的引用是用fieldref元素來表示的。同理,**和列表欄在**和列表物件模型中用spfield物件來表示,而在內容型別中引用的**或列表欄用spfieldlink物件來表示。

field元素包含了對**或列表欄的完整定義。

在字段引用中對這些屬性的更改僅僅應用於包含該欄位引用的特定內容型別。

將欄新增到列表

我們可以將**欄想象成模板;我們在**級別建立**欄,然後可以將其應用到所需的列表和子站點。

當我們將欄新增到列表,該欄的定義被拷貝到列表中,成為乙個列表欄。因此,在列表架構中,列表欄此時用

field元素表示。在物件模型裡用

spfield物件表示。

同樣,當我們將**欄新增到列表中時,結果列表欄具有與**欄相同的字段id。wss用該id來跟蹤那些列表欄是給定**欄的「孩子」。這樣當我們更改**欄後就可以將變更傳播到所有該**欄的子代列表欄。

我們也可以在列表級別建立欄。這些欄僅用於當前列表。我們僅可以將該欄新增到當前列表的內容型別中。在列表架構中該列表欄同樣用field元素表示,物件模型也對應spfield物件。因為他並不是**於其他欄,所以也沒有和任何欄之間d的父子關係。

在內容型別中引用欄 如果需要在內容型別裡跟蹤特定專案的元資料,我們可以引用乙個表示該元資料的欄。然而,我們不能在內容型別中建立欄;我們必須先建立欄然後再內容型別定義中引用他。因此,當我們新增欄到內容型別時,該內容型別架構並不包含

field元素;而是包含了乙個

fieldref元素。對於**和列表欄來說都是如此。

乙個字段引用保留了與所引用字段相同的字段id。

如果我們建立的內容型別是基於乙個父內容型別,預設情況下所有的父級欄的引用在子級內容型別中都用fieldref元素表示。

當我們將內容型別新增到列表時,內容型別中引用的欄會拷貝到列表中變為列表欄。內容型別中各fieldref元素在拷貝到列表架構中時變成field元素,並與**欄間保持父子關係。

當我們在列表內容型別中引用列表欄,該欄會以fieldref元素方式新增到列表內容型別架構中。

因此,欄在**和列表架構中始終用field元素表示,而在內容型別架構中始終以fieldref元素來表示。

內容型別中的字段引用在wss 3.0物件模型中用

spfieldlink物件表示。

下圖展示了這種關係。假設我們在內容型別中引用了**欄author。在內容型別架構中,該欄的引用表現為

fieldref元素。當我們在列表中新增該內容型別後,wss將author欄新增為

field元素。兩個元素具有與author**欄相同的字段id。當我們在內容型別中引用

itemno列表欄後,wss將其新增為

fieldref元素,也是用相同的字段id。

WSS3SDK之 更新子內容型別

每個內容型別都包含了其所基於的 內容型別的引用。這使得wss可以傳播,或者推送對於父內容型別的變更到其子 或列表內容型別。當您修改某內容型別後,您可以選擇推送這些改動到所有子級。當推送操作拷貝變化到基於該內容型別的 或列表內容型別時,他並不會覆蓋整個內容型別。相反,進行覆蓋的範圍會根據是通過使用者介...

WSS3SDK之 內容型別FormUrls架構概覽

formurls 架構描述了可以作為定製資訊新增到內容型別中的可選xml內容。該xml結點必須存放在內容型別定義中的xmldocument元素下。該架構允許您將套用某內容型別的列表項的顯示,編輯或新建頁面進行客戶端重定向,指到與原先不同的頁面上。該架構包含下列元素 display可選 文字。用於指定...

WSS3SDK之 伺服器和站點架構 物件模型概覽

windows sharepoint services提供了一整套高度結構化的伺服器端物件模型,使得我們可以方便的訪問sharepoint站點中的各種物件。在您的 中,通過一層層的物件結構可以從上向下獲取,直到找到您需要的物件和成員。這依賴於您建立的自定義應用程式或解決方案的型別,您可能會通過不同的...