使用可視化頁面建立SharePoint2010清單是件很簡單的事,隻需要使用滑鼠通過點選即可實作建立一個完整的清單,可以在建立視窗上選擇清單模闆來建立不同類型的清單執行個體,以實作存儲不同類型的資料。如圖1所示的建立視窗:
圖1
圖1是SharePoint2010所有清單模闆,當然我們也可以開發自己的清單模闆存放在圖1中。一般情況下沒有特殊需要都以“自定義清單”模闆來建立清單執行個體,基于“自定義清單”模闆建立的清單預設情況下隻有一個“标題”字段可供使用者輸入資料,使用者也可以添加自己的欄來存儲其他類型的資料。也就是說在SharePoint2010中要想建立清單必須基于某個模闆來建立,使用對象模型建立清單也是如此。
下面是在VS2010中使用對象模型建立清單的例子,并使用Feature部署,如圖2所示:
圖2
在圖2的VS2010解決方案資料總管中右擊“Features”檔案夾,并在彈出的菜單中選擇“添加功能”,如圖3所示:
圖3
在圖3中将建立的功能Feature1的名稱修改為“CreateList”并右擊它,在彈出的菜單中點選其中的“添加事件接收器”,如圖4所示:
圖4
在圖4中建立的CreateListEventReceiver類繼承于SPFeatureReceiver基類,此類主要用于處理在激活、停用、安裝、解除安裝和更新功能的過程中引發的事件。
圖4的FeatureActivated事件是用來處理在激活Feature時執行的代碼,要建立清單首先要執行個體化一個SPSite對象,代碼如下:
view source print ?
1 | using (SPSite site = new SPSite(“http: //develop”)) |
在using中執行個體化SPSite對象不用手工釋放資源,比較安全,建議使用此方法執行個體化對象。使用SPSite對象用來執行個體化一個網站集的對象,這也是所有對網站操作的入口。
然後再在SPSite對象上擷取一個網站,因為清單是在網站上存在的,是以還需要建立一個SPWeb對象,代碼如下:
view source print ?
1 | using (SPSite site = new SPSite(“http: //develop”)) |
3 | using (SPWeb web = site.RootWeb) |
上面的代碼中使用site.RootWeb來擷取網站集中的根網站。下面我們在根網站下基于“自定義清單”模闆來建立一個清單。完整的代碼如下:
view source print ?
01 | public override void FeatureActivated(SPFeatureReceiverProperties properties) |
04 | using (SPSite site = new SPSite(“http: //develop”)) |
07 | using (SPWeb web = site.RootWeb) |
10 | web.AllowUnsafeUpdates = true ; |
12 | Guid newListId = web.Lists.Add( "項目總結" , "清單描述" , SPListTemplateType.GenericList); |
14 | SPList list = web.Lists[newListId]; |
16 | list.OnQuickLaunch = true ; |
在上面的代碼中,在SPWeb對象上使用AllowUnsafeUpdates屬性來設定允許在網站中添加清單的操作。建立清單要使用SPWeb對象的Lists.Add()方法,傳回的類型為GUID,web.Lists.Add()方法中的三個參數的含義如下:
- 第一個參數表示建立清單的标題。
- 第二個參數表示對清單的描述。
- 第三個參數是使用SPListTemplateType擷取要基于那個清單模闆建立清單,GenericList表示自定義清單模闆。
建立好的清單就可以根據其GUID來擷取SPList對象了,擷取到SPList對象之後,就可以使用SPList的OnQuickLaunch屬性設定此清單是否在快速啟動欄上顯示。最後使用List.Update()更新以上的所有操作。
上面的代碼是在激活Feature時就建立清單的例子,下面我們再寫一段代碼,當此Feature被停用時就删除建立的清單,這段代碼要寫在圖4的FeatureDeactivating事件中。完整的代碼如下:
view source print ?
01 | public override void FeatureDeactivating(SPFeatureReceiverProperties properties) |
03 | using (SPSite site = new SPSite(“http: //develop”)) |
05 | using (SPWeb web = site.RootWeb) |
07 | web.AllowUnsafeUpdates = true ; |
08 | SPList list = web.Lists[ "項目總結" ]; |
在上面的代碼中首先按剛才建立的清單名稱擷取到SPList對象,然後再使用SPList對象的Delete()方法删除此清單。
上面所有代碼編寫完成之後,就可以使用VS2010的部署功能将此Feature部署到SharePoint2010的根網站上,部署成功之後,我們打開“網站操作”菜單下的“網站設定”頁面并點選其中的“管理網站功能”連結,如圖5所示:
圖5
在圖5的頂部我們可以看到一個名稱為:“Example.SharePoint2010 Feature1”的功能,它就是我們在上面部署的建立清單的Feature。VS2010部署時會自動安裝、部署此Feature。因為我們在激活Feature時編寫了建立清單的代碼,是以我們應該能在根網站下看到建立的新清單,如圖6所示:
圖6
如圖6看到的“項目總結”清單就是我們使用SharePoint2010對象模型建立的清單。由于是基于“自定義清單”模闆建立的,是以在圖6中隻能看到此清單的一個“标題”欄。
由于我們在停用此Feature時編寫了一段删除“項目總結”清單的代碼,是以當我們在圖5中點選“Example.SharePoint2010 Feature1”功能的“停用”按鈕,則會删除“項目總結”清單,如圖7所示:
圖7
如圖7所示在左側的快速啟動欄上已經看不到“項目總結”的清單了,且右側的“Example.SharePoint2010 Feature1”功能已處于“停用”狀态了。也就是我們在停止Feature時編寫删除清單的代碼已經起作用了。