【转】2.2 SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)
?
(二)列表(SPList)
列表是SharePoint中最為重要的數據容器,我們一般保存在SharePoint中的所有數據,都是保存在列表中(文檔庫也是一種列表),因此列表對象在SharePoint的開發中是非常重要的對象之一。在SharePoint中,列表對象使用SPList表示,列表的集合使用SPListCollection表示。
如果實在難以理解SharePoint列表是怎么一回事的話,可以設想如下這種其實不準確的比喻,與傳統的數據類型相比較,有如下的對應關系:列表(SPList)相當于數據表(DataTable);視圖(SPView)相當于數據視圖(DataView);字段(SPField)相當于數據欄(DataColumn);列表條目(SPListItem)相當于數據行(DataRow)。
| 技巧提示: 在創建一個列表之后,我們會注意到列表的根目錄和列表名稱可能存在著一定的關系,讀者可以嘗試著使用英文、中文、中英文混雜的名稱創建一些列表,并觀察列表路徑中的規律。對于全中文列表名稱而言,列表的路徑可能會是“Lists/List”、“Lists/List1”、“Lists/List2”這樣一些沒有實際含意的Url。在實際應用中創建中文名稱列表的時候,可以先使用一個有意義的英文名稱創建列表(比如“Contacts”),再將其標題修改成中文(比如“聯系人”)。 |
?
1、列表的獲取
列表的獲取有如下若干種方式:
(1) 使用SPWeb的Lists屬性獲取網站中所有列表的集合(SPListCollection),之后使用索引器獲取特定的某個列表:
- Lists[idx]:int型索引器,根據下標獲取,不太常用;
- Lists[id]:Guid型索引器,根據列表的Guid獲取;
- Lists[title]:string型索引器,根據列表名稱獲取,最常用的一種方式。
(2) 使用SPWeb的GetList方法,根據列表相對服務器的路徑獲取;
(3) 使用SPWeb的GetListFromUrl,根據列表的一些視圖頁面的相對網站的路徑(也可以使用相對服務器的路徑)獲取列表;
(4) 使用SPWeb的GetListsOfType方法,獲取某一特定基類型(見后文)的所有列表。
獲取到列表集合(SPListCollection)后,通過其TryGetList方法,根據列表的標題嘗試獲取列表。該方法是SharePoint 2010中新增加的方法,之前最常用的是使用字符串索引器的方式根據列表名稱來獲取列表對象,但如果列表名稱并不存在的話,則會拋出一個異常。與之前的獲取方法相比,使用TryGetList方法,當列表名稱不存在的時候,會返回null,更加人性化。
?
例如,如下的程序獲取了網站中一個名叫“Chapters”的列表:
1: using(SPSite site = new SPSite("http://sp2010/book")) 2: { 3: using(SPWeb web = site.OpenWeb()) 4: { 5: SPList chptList = web.Lists.TryGetList("Chapters"); 6: if(chptList != null) 7: { 8: // use the list 9: } 10: } 11: }?
2、列表的基類型(BaseType)和列表模板(BaseTemplate)
這是兩個比較容易混淆的屬性和概念,但是這兩個概念在SharePoint的跨網站跨列表查詢、事件處理程序、網站功能(Feature)中是非常重要的,因此在這里做一個簡要的說明。
列表的基類型指的是列表的基本類型,不同基本類型的列表之間在底層結構上有著較大的差異,SharePoint內置有5種基本類型的列表(參考SPBaseType枚舉類型):
- 普通列表(GenericList):大多數列表的類型,比如通知、日歷、聯系人等;
- 文檔庫(DocumentLibrary):存儲文件的列表,比如文檔庫、圖片庫、表單庫等;
- 討論板(DiscussionBoard):討論板列表;
- 調查(Survey):調查列表;
- 問題追蹤(Issue):問題追蹤列表。
由上述分類可以看出,列表的基類型定義了列表的基本結構和大體功能,而列表模板則更具體地定義了一個列表的具體結構、字段、視圖等信息,我們在列表創建頁面中所看到的每一個鏈接,基本上都是一個個不同的列表模板,當然我們也可以通過將列表另存為模板的方式,將一個配置好字段、視圖信息的列表保存為自定義的列表模板。
SharePoint內置了很多種列表模板,每種內置的列表模板都有一個整型的ID,例如通知列表的模板ID為104、文檔庫模板的ID為101。這些內置列表模板和ID值可以參考SDK中的SPListTemplateType枚舉類型。
?
3、列表的常用屬性
SPList的常用屬性如下:
| 名稱 | 類型 | 說明 |
| BaseTemplate | SPListTemplateType | 列表模板 |
| BaseType | SPBaseType | 列表的基類型 |
| DefaultView | SPView | 列表的默認視圖 |
| RootFolder | SPFolder | 列表的根文件夾 |
| Title | string | 列表的標題 |
| Items | SPListItemCollection | 列表中的所有條目(非文件夾條目) |
| Folders | SPListItemCollection | 列表中的所有文件夾條目,詳見后文解釋 |
| Fields | SPFieldCollection | 列表中的所有字段 |
| Forms | SPFormCollection | 列表中的表單(如新建、編輯、查看等) |
| Views | SPViewCollection | 列表中的所有視圖 |
例如,如下的程序列出了網站中的所有列表,并打印出其列表的標題:
1: using(SPSite site = new SPSite("http://sp2010/book")) 2: { 3: using(SPWeb web = site.OpenWeb()) 4: { 5: foreach(SPList list in web.Lists) 6: Console.WriteLine(list.Title); 7: } 8: }總結
以上是生活随笔為你收集整理的【转】2.2 SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浦发淘票票信用卡 你的观影好帮手
- 下一篇: 了解 SharePoint 2010 开