天天看點

使用對象模型建立SharePoint2010清單并使用Feature部署

使用可視化頁面建立SharePoint2010清單是件很簡單的事,隻需要使用滑鼠通過點選即可實作建立一個完整的清單,可以在建立視窗上選擇清單模闆來建立不同類型的清單執行個體,以實作存儲不同類型的資料。如圖1所示的建立視窗:

使用對象模型建立SharePoint2010清單并使用Feature部署

圖1

圖1是SharePoint2010所有清單模闆,當然我們也可以開發自己的清單模闆存放在圖1中。一般情況下沒有特殊需要都以“自定義清單”模闆來建立清單執行個體,基于“自定義清單”模闆建立的清單預設情況下隻有一個“标題”字段可供使用者輸入資料,使用者也可以添加自己的欄來存儲其他類型的資料。也就是說在SharePoint2010中要想建立清單必須基于某個模闆來建立,使用對象模型建立清單也是如此。

下面是在VS2010中使用對象模型建立清單的例子,并使用Feature部署,如圖2所示:

使用對象模型建立SharePoint2010清單并使用Feature部署

圖2

在圖2的VS2010解決方案資料總管中右擊“Features”檔案夾,并在彈出的菜單中選擇“添加功能”,如圖3所示:

使用對象模型建立SharePoint2010清單并使用Feature部署

圖3

在圖3中将建立的功能Feature1的名稱修改為“CreateList”并右擊它,在彈出的菜單中點選其中的“添加事件接收器”,如圖4所示:

使用對象模型建立SharePoint2010清單并使用Feature部署

圖4

在圖4中建立的CreateListEventReceiver類繼承于SPFeatureReceiver基類,此類主要用于處理在激活、停用、安裝、解除安裝和更新功能的過程中引發的事件。

圖4的FeatureActivated事件是用來處理在激活Feature時執行的代碼,要建立清單首先要執行個體化一個SPSite對象,代碼如下:

view source print ?

1

using

(SPSite site =

new

SPSite(“http:

//develop”))

2

{

3

}

在using中執行個體化SPSite對象不用手工釋放資源,比較安全,建議使用此方法執行個體化對象。使用SPSite對象用來執行個體化一個網站集的對象,這也是所有對網站操作的入口。

然後再在SPSite對象上擷取一個網站,因為清單是在網站上存在的,是以還需要建立一個SPWeb對象,代碼如下:

view source print ?

1

using

(SPSite site =

new

SPSite(“http:

//develop”))

2

{

3

using

(SPWeb web = site.RootWeb)

4

{

5

}

6

}

上面的代碼中使用site.RootWeb來擷取網站集中的根網站。下面我們在根網站下基于“自定義清單”模闆來建立一個清單。完整的代碼如下:

view source print ?

01

public

override

void

FeatureActivated(SPFeatureReceiverProperties properties)

02

{

03

//執行個體化SPSite對象

04

using

(SPSite site =

new

SPSite(“http:

//develop”))

05

{

06

//擷取SPWeb對象

07

using

(SPWeb web = site.RootWeb)

08

{

09

//允許在不安全的Get上更新

10

web.AllowUnsafeUpdates =

true

;

11

//在網站中添加基于自定義模闆的清單

12

Guid newListId = web.Lists.Add(

"項目總結"

,

"清單描述"

, SPListTemplateType.GenericList);

13

//擷取建立好的清單

14

SPList list = web.Lists[newListId];

15

//在快速啟動欄上顯示此清單

16

list.OnQuickLaunch =

true

;

17

list.Update();

18

}

19

}

20

}

在上面的代碼中,在SPWeb對象上使用AllowUnsafeUpdates屬性來設定允許在網站中添加清單的操作。建立清單要使用SPWeb對象的Lists.Add()方法,傳回的類型為GUID,web.Lists.Add()方法中的三個參數的含義如下:

  1. 第一個參數表示建立清單的标題。
  2. 第二個參數表示對清單的描述。
  3. 第三個參數是使用SPListTemplateType擷取要基于那個清單模闆建立清單,GenericList表示自定義清單模闆。

建立好的清單就可以根據其GUID來擷取SPList對象了,擷取到SPList對象之後,就可以使用SPList的OnQuickLaunch屬性設定此清單是否在快速啟動欄上顯示。最後使用List.Update()更新以上的所有操作。

上面的代碼是在激活Feature時就建立清單的例子,下面我們再寫一段代碼,當此Feature被停用時就删除建立的清單,這段代碼要寫在圖4的FeatureDeactivating事件中。完整的代碼如下:

view source print ?

01

public

override

void

FeatureDeactivating(SPFeatureReceiverProperties properties)

02

{

03

using

(SPSite site =

new

SPSite(“http:

//develop”))

04

{

05

using

(SPWeb web = site.RootWeb)

06

{

07

web.AllowUnsafeUpdates =

true

;

08

SPList list = web.Lists[

"項目總結"

];

09

list.Delete();

10

}

11

}

12

}

在上面的代碼中首先按剛才建立的清單名稱擷取到SPList對象,然後再使用SPList對象的Delete()方法删除此清單。

上面所有代碼編寫完成之後,就可以使用VS2010的部署功能将此Feature部署到SharePoint2010的根網站上,部署成功之後,我們打開“網站操作”菜單下的“網站設定”頁面并點選其中的“管理網站功能”連結,如圖5所示:

使用對象模型建立SharePoint2010清單并使用Feature部署

圖5

在圖5的頂部我們可以看到一個名稱為:“Example.SharePoint2010 Feature1”的功能,它就是我們在上面部署的建立清單的Feature。VS2010部署時會自動安裝、部署此Feature。因為我們在激活Feature時編寫了建立清單的代碼,是以我們應該能在根網站下看到建立的新清單,如圖6所示:

使用對象模型建立SharePoint2010清單并使用Feature部署

圖6

如圖6看到的“項目總結”清單就是我們使用SharePoint2010對象模型建立的清單。由于是基于“自定義清單”模闆建立的,是以在圖6中隻能看到此清單的一個“标題”欄。

由于我們在停用此Feature時編寫了一段删除“項目總結”清單的代碼,是以當我們在圖5中點選“Example.SharePoint2010 Feature1”功能的“停用”按鈕,則會删除“項目總結”清單,如圖7所示:

使用對象模型建立SharePoint2010清單并使用Feature部署

圖7

如圖7所示在左側的快速啟動欄上已經看不到“項目總結”的清單了,且右側的“Example.SharePoint2010 Feature1”功能已處于“停用”狀态了。也就是我們在停止Feature時編寫删除清單的代碼已經起作用了。

繼續閱讀