【转】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: }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode - 227】基本计算器 II(栈)

https://leetcode-cn.com/problems/basic-calculator-ii/ 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 输入:s "32*2" 输出:7 示例 2: 输入…

Team Foundation Server的回滚操作

VSTF Rollback 操作 最近遇到要把有些项目需要做回滚操作,发现TFS的UI上没有回滚的操作。 经过百度,查到一个CSDN上的博主发了一种方法,经过验证,那种方法是错误的: 他通过先获取指定变更集-》签出-》签回去&#xff…

【LeetCode - 141142】环形链表(i和ii)(快慢指针,链表)

https://leetcode-cn.com/problems/linked-list-cycle/ 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾…

sharepoint的文件是怎样存放的及存放的表是哪个

主要有两个表,一个是AllDocs,另一个是AllDocStreams,在AllDocstreams有一个content字段,这个字段是用来保存文件内容的,这个字段最大只能放2G,这也就是SharePoint上传文件最大不能超过2G的原因。 表 AllDoc…

【LeetCode - 556】下一个更大元素 III(贪心,思维)

https://leetcode-cn.com/problems/next-greater-element-iii/ 给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n 。如果不存在这样的正整数,则返回 -1 。 注意 ,…

SharePoint Pages(1)之SharePoint页面体系架构

[开篇]最近一段时间在研究SharePoint技术,在内网建设了一个门户的原型,做一些尝试。由于一些需求要新建一些功能页。开始使用SharePoint制作页面,搞了半天才明白原来内容页不支持内联代码,在Visual Studio里面捣鼓了半夜&#xff…

逆序数问题,用归并排序而非树状数组求解

逆序数,结合归并排序。 之前一直用树状数组写的,今天发现归并排序也很好写。 https://www.nowcoder.com/practice/96bd6684e04a44eb80e6a68efc0ec6c5?tabanswerKey class Solution { public:int a[200005] {0}, tmp[200005] {0};int sort(int left…

SharePoint安全 - SharePoint网站常用页面URL索引

一. 主要网站内容 首页 /default.aspx /Pages/default.aspx 网站设置 /_layouts/settings.aspx 所有网站内容 /_layouts/viewlsts.aspx 移动端所有网站内容 /_layouts/mobile/mbllists.aspx 共享文档 /shared documents/forms/allitems.aspx 管理网站内容结构 /_l…

docker安装与学习

安装Docker 系统环境:macOS Catalina 10.15.7 通过brew安装docker brew install --cask --appdir/Applications docker 直接brew install docker装上的好像不是,好像是当成了formula了。如下图 brew cask install docker直接提示命令不对&#xff0c…

集群、分布式、负载均衡区别与联系

1、Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群) 集群是一个统称,他分为好几种,如:高性能科学群集、负载均衡群集、高可用性群集等。 科学群集 、高性能集群(High performance clus…

Mac下使用brew的常用步骤

以docker为例: 第一步: 先 brew search 软件名 然后发现在Formulae和Casks中都有docker包。 第二步: 分别查看info brew info dockerbrew info homebrew/cask/docker 从详情中可以看出,cask下的才是Docker Desktop for Mac&a…

End User 访问SharePoint URL获取数据流程

当一个User用一个独立的URL请求一个Page页的时候,Client端要创建一个Http请求数据包。然后,Client通过解析DNS去获取HostName来确定IP地址:比如Intranet.contoso.com 客户端在数据包的HostHeader Field添加HostName —>客户端然后通过默…

【MOSS】快速调试Sharepoint站点

1、打开网站根目录下的web.config 1.将<SafeMode ... CallStack"false" ...... AllowPageLevelTrace"false">中的CallStack和AllowPageLevelTrace的属性设置为“true”。 2、 将<customErrors mode"On" />的mode改为"Off&quo…

【机器学习】 - keras中的模型可视化plot_model模块(含依赖包pydot和graphviz的详细安装过程与注意事项)

运行环境&#xff1a; win10 anaconda3-spyder python3.7.4 tensorflow2.0.0 首先需要安装两个包pydot和graphviz&#xff0c;不然会报错&#xff1a; Failed to import pydot. You must install pydot and graphviz for pydotprint to work. 然后去anaconda prompt 里去…

Sharepoint域账户,运行Power Shell报错

以其他域账户登陆Sharepoint 2013 服务器&#xff0c;并以管理员权限运行SharePoint 2013 Management Shell时&#xff0c;出现如下错误&#xff1a; The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered. 同时&#xff0c;所有SharePoin…

【Linux学习】常用指令-sortunique

假设当前文件叫file.txt sort将文件的每一行作为一个单位&#xff0c;相互比较&#xff0c;比较原则是从首字符向后&#xff0c;依次按ASCII码值进行比较&#xff0c;最后将他们按升序输出。 sort的-u选项 它的作用很简单&#xff0c;就是在输出行中去除重复行。 sort的-r选项…

【Linux学习】强大的文本分析工具AWK

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&#xff0c;Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 调用AWK&#xff1a; 1.命令行方式&#xff08;常用&#xff09; awk [-F field-separator] commands input-file(s) 其中&#xff0c;comman…

【Knockout】二、监控属性Observables

MVVM和viewModel Knockout是建立在以下三大核心功能之上的&#xff1a; 监控属性和依赖跟踪&#xff08;Observables and dependency tracking&#xff09;声明式绑定&#xff08;Declarative bindings&#xff09;模板&#xff08;Templating&#xff09; 首先让我们先来了解…

【C++学习】对私有构造析构函数的思考:new一个类对象vs直接创建类对象

前置知识&#xff1a; new的类对象需要手动delete。且使用堆空间。且只能用指针接收。 直接创建的类对象创建在栈中&#xff08;或说堆栈&#xff09;。不需要手动delete&#xff0c;随着生存周期的结束&#xff08;如所在的函数return了&#xff09;而释放&#xff0c;和堆栈…

applyBinding Observables

一般的数据绑定有三种:One-Time&#xff0c;One-Way&#xff0c;Two-way。 One-Time绑定模式的意思即为从viewModel绑定至UI这一层只进行一次绑定&#xff0c;程序不会继续追踪数据的在两者中任何一方的变化&#xff0c;这种绑定方式很使用于报表数据&#xff0c;数据仅仅会加…