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