(二)列表(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)的更多相关文章

  1. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)

    本节将会介绍SharePoint中最为常用的一些对象模型,以及如何使用这些对象模型来访问和操作网站中的数据.几乎所有的SharePoint服务器端开发都会涉及到这些内容,因此应着重掌握本节中所介绍的基 ...

  2. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)

    (五)列表条目(SPListItem) SharePoint中数据的存储基本上都是通过列表条目来完成(文档库中的文档也是一种特殊的列表条目),因此在SharePoint应用开发中,最终是要和列表条目打 ...

  3. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 3)

    (三)视图 与传统意义上的数据视图类似,SharePoint中的列表视图指定了列表中数据的筛选条件.排序条件.分组条件.显示栏/字段.显示条目数.显示样式等内容.在SharePoint中,使用SPVi ...

  4. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 4)

    (四)栏/字段 SharePoint中的字段(中文版中叫做"栏")与传统的数据栏类似,也有不同类型的区别,不过SharePoint中内置的栏类型除了按照数据类型(如数字.日期和时间 ...

  5. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 3)

    (三)遍历 文件系统的遍历是指按照文件夹的层级结构遍历文档库.列表的文件夹和列表条目.遍历主要有三种方式:(1)直接使用文件系统对象模型进行遍历:(2)使用SPDocumentLibrary进行遍历: ...

  6. SharePoint服务器端对象模型 之 访问用户、用户组和权限(Part 1)

    (一)概述 SharePoint权限系统是整个SharePoint体系中一个比较重要的部分,权限系统主要分成两大部分:认证和授权. 认证主要解决的问题是判断登陆者是否合法,以及他究竟是哪一个用户,Sh ...

  7. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 1)

    本节中所阐述的内容,主要适用于SharePoint文档库中的文件和文件夹,以及列表中的文件夹.系统中的其他文件(如_layouts中的文件.配置文件.程序文件等)不在本章节的讨论范围之内.   (一) ...

  8. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 2)

    4.添加文件夹 文件夹的创建方法在文档库和普通列表中稍有不同. 在文档库中,与一般的集合操作相同,直接使用SPFolderCollection的Add(string name)方法即可添加文件夹,例如 ...

  9. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)

    (四)列表附件 列表的附件也是文件系统的一部分,它依附于普通列表的列表条目之上(文档库没有附件),它的操作在一些地方和文档库中文档的操作非常类似.   1.附件的读取 一个列表条目的附件可以使用SPL ...

随机推荐

  1. 在FASTBuild中使用Caching

    上一篇:初识FASTBuild 在FASTBuild中使用缓存只需要注意三个环节: 一.设置编译选项 对于GCC\SNC\Clang编译器,没有特殊的要求 对于MSVC编译器,必须设置/Z7调试模式. ...

  2. 【android相关】【问题解决】R.java文件丢失

    在进行android开发过程中,有时候,我们会遇到gen文件中R.java丢失的现象.重新build,或者clean工程,close并重新打开Project,但有时也没解决. 这可能是由于不小心把xm ...

  3. Python CODE——Nonblocking I/O client AND Delaying Server

    #!Nonblocking I/O - Chapter 5 -pollclient.py import socket,sys,select port=51423 host='localhost' sp ...

  4. iOSQuart2D绘图之UIImage简单使用

    代码地址如下:http://www.demodashi.com/demo/11609.html 人生得意须尽欢,莫使金樽空对月. 天生我材必有用,千金散尽还复来. 前记 说到UIImage大家都不会感 ...

  5. iOS开发-Object-C学习之结构体使用

    前言:定义结构体并不是定义一个变量,而是定义了种数据类型. 结构体作用: 结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型.以方便日后的使用. 在实 ...

  6. css学习之overlay

    CSS Overlay技巧 作者:大漠 日期:2013-11-10 点击:8  本文由大漠根据SARA SOUEIDAN的<CSS OVERLAY TECHNIQUES>所译,整个译文带 ...

  7. vue 结合localStorage 来双向绑定数据

    结合localStorage 来双向绑定数据(超级神奇) localStorage.js: const STORAGE_KEY = 'todos_vuejs' export default { fet ...

  8. mariadb mysql 报'Access denied for user 'root'@'localhost' (using password: NO)'错误的解决

    C:\Program Files\MariaDB 10.2\bin>mysql admin -u root password "x123456789" mysql Ver 1 ...

  9. WIN10系统如何设置系统的护眼色

    小编的眼神不是很好,所以喜欢把电脑的各种文档的背景色设置成护眼色(就是在视觉效果看起来非常舒适的那种淡绿色) 方法/步骤     windows+R键调出运行窗口(或者鼠标右击开始键,选择运行)   ...

  10. 通过虚拟驱动vivi分析摄像头驱动

    Linux摄像头驱动学习之:(二)通过虚拟驱动vivi分析摄像头驱动 一.通过指令 "strace -o xawtv.log xawtv" 得到以下调用信息: // 1~7都是在v ...