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: }
SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)的更多相关文章
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)
本节将会介绍SharePoint中最为常用的一些对象模型,以及如何使用这些对象模型来访问和操作网站中的数据.几乎所有的SharePoint服务器端开发都会涉及到这些内容,因此应着重掌握本节中所介绍的基 ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)
(五)列表条目(SPListItem) SharePoint中数据的存储基本上都是通过列表条目来完成(文档库中的文档也是一种特殊的列表条目),因此在SharePoint应用开发中,最终是要和列表条目打 ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 3)
(三)视图 与传统意义上的数据视图类似,SharePoint中的列表视图指定了列表中数据的筛选条件.排序条件.分组条件.显示栏/字段.显示条目数.显示样式等内容.在SharePoint中,使用SPVi ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 4)
(四)栏/字段 SharePoint中的字段(中文版中叫做"栏")与传统的数据栏类似,也有不同类型的区别,不过SharePoint中内置的栏类型除了按照数据类型(如数字.日期和时间 ...
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 3)
(三)遍历 文件系统的遍历是指按照文件夹的层级结构遍历文档库.列表的文件夹和列表条目.遍历主要有三种方式:(1)直接使用文件系统对象模型进行遍历:(2)使用SPDocumentLibrary进行遍历: ...
- SharePoint服务器端对象模型 之 访问用户、用户组和权限(Part 1)
(一)概述 SharePoint权限系统是整个SharePoint体系中一个比较重要的部分,权限系统主要分成两大部分:认证和授权. 认证主要解决的问题是判断登陆者是否合法,以及他究竟是哪一个用户,Sh ...
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 1)
本节中所阐述的内容,主要适用于SharePoint文档库中的文件和文件夹,以及列表中的文件夹.系统中的其他文件(如_layouts中的文件.配置文件.程序文件等)不在本章节的讨论范围之内. (一) ...
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 2)
4.添加文件夹 文件夹的创建方法在文档库和普通列表中稍有不同. 在文档库中,与一般的集合操作相同,直接使用SPFolderCollection的Add(string name)方法即可添加文件夹,例如 ...
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)
(四)列表附件 列表的附件也是文件系统的一部分,它依附于普通列表的列表条目之上(文档库没有附件),它的操作在一些地方和文档库中文档的操作非常类似. 1.附件的读取 一个列表条目的附件可以使用SPL ...
随机推荐
- 【高德地图API】从零開始学高德JS API(二)地图控件与插件——測距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨
不管是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发人员使用.降低开发人员工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,相似谷歌 ...
- eclipse工程重命名后,无法生产class问题
在很多时候我们对project重新命名后,class文件始终没有生产,尤其是在web项目的时候,如果不注意class文件生成问题,会浪费大量的时间找错误.这里分享下如何解决eclipse重命名后cla ...
- java集合类简单思维导图
- MATLAB 的通用命令
MATLAB 的通用命令 1.MATLAB 的标点符号及其特殊功能. 2.MATLAB 的键盘按键及其特殊功能. ↑或者Ctrl+p:调用上一次的命令 ↓或者Ctrl+n:调用下一行的命令 ←或者Ct ...
- Velocity中文乱码问题解决方法
http://yonge812.iteye.com/blog/1010290 Velocity中文乱码问题需要注意一下几点: 1.eclipse默认编码方式 2.页面的编码方式 3.volocity模 ...
- 【MyBatis学习07】动态sql
1. 动态sql 动态sql是mybatis中的一个核心,什么是动态sql?动态sql即对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接.组装.就拿上一篇博文中对用户的综合查询一例来 ...
- 【MyBatis学习06】输入映射和输出映射
在前面几篇博文的例子中也可以看到mybatis中输入映射和输出映射的身影,但是没有系统的总结一下,这篇博客主要对这两个东东做一个总结.我们知道mybatis中输入映射和输出映射可以是基本数据类型.ha ...
- rtp协议详解/rtcp协议详解
转自:http://www.cnblogs.com/li0803/archive/2010/11/20/1882792.html 1.简介 目前,在IP网络中实现实时语音.视频通信和应用已经成为网络应 ...
- cadence原理图和PCB互联显示成功但是不能高亮和database
问题现象:cadence原理图和PCB互联显示成功但是不能高亮我的问题 解决:尝试修复数据库试试,Tools->Database check 提醒:有一个封装非法命名,在原理图中修改后 再次保存 ...
- Sublime text 3 搭建Python3 IDE
起因:为了提高编码工作中的体验,Sublime Text:不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受. Vim难于上手,Eclipse,VS 体积庞大,即便体积轻巧迅速启动的 ...