(三)Url 作为一个B/S体系,在SharePoint的属性.方法参数和返回值中,大量的涉及到了Url,总的来说,涉及到的Url可以分为如下四类: 绝对路径:完整的Url,包含了协议头(http或https).端口号.主机名等等,例如:http://myserver/subweb/documents/myfolder/myfile.doc.在SharePoint中,必须要使用绝对路径的机会并不是很多.一些网站级别对象的属性为绝对路径,例如spWeb.Url和spSite.Url. 相对服务器路…
SharePoint服务器端对象模型 之 使用CAML进行数据查询 一.概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列表条目的集合. 除去列表上的查询之外,在SharePoint中还大量存在着各种各样的查询,比如针对回收站的SPRecycleBinQuery.针对审计的SPAuditQuery.针对变更的SPChangeQuery等等,不过这些查询在实际项目中使用到的频率并不是很高.本章节还是着重介绍列表查询功能.…
对于刚刚开始接触SharePoint的开发人员,即使之前有较为丰富的ASP.NET开发经验,在面对SharePoint时候可能也很难找到入手的方向.对于任何一种开发平台而言,学习开发的过程大致会包括:开发工具的使用.开发手段的选择和开发语言的编写,SharePoint自然也不例外.具体到SharePoint 2010来说,开发工具的使用即如何更高效便捷地使用Visual Studio 2010:开发手段是指在面对不同需求的时候,我们应该选择哪一种项目模板,如何使用该模板创建出我们需要的内容:开发…
本节将会介绍SharePoint中最为常用的一些对象模型,以及如何使用这些对象模型来访问和操作网站中的数据.几乎所有的SharePoint服务器端开发都会涉及到这些内容,因此应着重掌握本节中所介绍的基本对象模型的使用方法.由于篇幅所限,在介绍每种对象的时候只能阐述一些最为常用和重要的属性及方法,以及一些容易混淆或出错的内容.更加完整的属性.方法的定义.介绍和代码示例片段,请参考SDK中类库索引中相关章节. 网站中一些常用对象的结构大概如下图所示(从SharePoint 2003起,这部分内容在结…
5年前(嗯,是5年前),SharePoint 2010刚发布的时候,曾经和kaneboy试图一起写一本关于SharePoint 2010开发的书,名字叫<SharePoint 2010 应用开发指南>(涂指南这个名字不是白叫的).给大家看一下当年列出来的大纲: SharePoint 2010开发概览 SharePoint 2010基础架构,SharePoint与ASP.NET.IIS的关系 解释服务器场的概念,从硬件拓扑层次解释APP.WFE 解释Web应用程序.网站集.网站.列表和文档库的概…
在一个传统的ASP.NET开发过程中,我们往往会把开发分为界面展现层.逻辑业务层和数据访问层这三个层面.作为一个应用开发平台,SharePoint是微软在直观的开发能力和自由的扩展能力之间,取到的一个平衡点,其对象模型的设计理念也反映了这两者之间的平衡.做一个并不太准确地比喻,在SharePoint中对象模型的地位就相当于传统的数据访问层,只不过我们所面对的既不是具体的和实际业务需求相关的对象实体(直观开发),也不是底层的数据库表(自由扩展),而是在SharePoint平台中诸如网站.列表.文件…
整个系列已完结,大概看了一眼,平均阅读量不到200.估计也没什么人看了,而且服务器端对象模型除了在某些企业开发中会用到,从2013时代开始其实已经不是SharePoint开发的最佳选择了.不过既然已经开了坑,还是把坑填完了. 以下是汇总的文章列表目录(共23篇): 序言 对象模型概述(Part 1) 对象模型概述(Part 2) 访问网站和列表数据(Part 1) 访问网站和列表数据(Part 2) 访问网站和列表数据(Part 3) 访问网站和列表数据(Part 4) 访问网站和列表数据(Pa…
(一)概述 SharePoint权限系统是整个SharePoint体系中一个比较重要的部分,权限系统主要分成两大部分:认证和授权. 认证主要解决的问题是判断登陆者是否合法,以及他究竟是哪一个用户,SharePoint与此相关的对象包括用户和用户组.SharePoint支持多种身份认证方式,从最基本的Windows集成认证到各种表单认证,并且在SharePoint 2010中增加了基于声明(Claim Based)认证方式,以及一些相关服务,允许在同一个网站中使用多种认证方式.不过认证方式的设置不…
(一)概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列表条目的集合. 除去列表上的查询之外,在SharePoint中还大量存在着各种各样的查询,比如针对回收站的SPRecycleBinQuery.针对审计的SPAuditQuery.针对变更的SPChangeQuery等等,不过这些查询在实际项目中使用到的频率并不是很高.本章节还是着重介绍列表查询功能. 在SharePoint 2010之前,列表查询的查询语句都是通过…
(四)使用LINQ进行列表查询 在生成实体类之后,就可以利用LINQ的强大查询能力进行SharePoint列表数据的查询了.在传统SharePoint对象模型编程中,需要首先获取网站对象,再进行其他操作:使用LINQ也是类似,对数据的访问和操作都要先获取DataContext网站,之后再通过这个DataContext进行数据访问. 1.获取网站和列表 DataContext的创建同样也是要使用绝对路径进行构造,并使用GetList方法获取相应的列表.例如下面的代码获取Chapters列表中所有的…
(五)列表条目(SPListItem) SharePoint中数据的存储基本上都是通过列表条目来完成(文档库中的文档也是一种特殊的列表条目),因此在SharePoint应用开发中,最终是要和列表条目打交道的.在SharePoint对象模型中,使用SPListItem表示列表条目,使用SPListItemCollection表示列表条目集合.   1.列表条目的获取 列表条目的获取有多种方式,一些常用方式如下: (1) 通过SPList的Items属性,获取列表中的所有条目(不包括文件夹本身对应的…
(三)遍历 文件系统的遍历是指按照文件夹的层级结构遍历文档库.列表的文件夹和列表条目.遍历主要有三种方式:(1)直接使用文件系统对象模型进行遍历:(2)使用SPDocumentLibrary进行遍历:(3)借助SPQuery进行遍历. 1.SPList的Items和Folders属性 在介绍真正的遍历之前,有必要先解释一下这两个重要的属性. 这两个属性返回的都是SPListItemCollection类型,它们分别返回了列表中所有的普通条目(或文件),以及列表中的所有文件夹.不论这些条目.文件.…
(五)列表查询中的阈值限制 在之前版本的SharePoint 中,如果在查询的时候没有指定返回数目,那么SharePoint将会查找该列表中所有的条目,这可能会造成在SQL表中需要返回大量的条目,极大影响了数据库的I/O性能和网络负载,如果返回的条目数量超过一定范围之后,SQL Server会把整张数据表锁定.我们知道在SharePoint中,所有的列表条目信息都是存储在同一张SQL Server数据表中的,这也就意味着,一个设计的不好的列表查询,可能会导致整个SharePoint的其他应用都停…
本节中所阐述的内容,主要适用于SharePoint文档库中的文件和文件夹,以及列表中的文件夹.系统中的其他文件(如_layouts中的文件.配置文件.程序文件等)不在本章节的讨论范围之内.   (一)概述 SharePoint的文档库是文件系统和列表系统的双重结构:文档库中的文件既是一个文件也是一个列表条目:文档库和列表中的文件夹既是一个文件夹也是一个列表条目(普通列表和文档库的文件夹略微有些不同). 那么,既然文档/文件夹/普通列表条目都可以用同样的列表条目的形式表现,那么如何区分一个列表条目…
(三)使用SPQuery进行列表查询 1.概述 列表查询主要是指在一个指定的列表(或文档库)中按照某些筛选.排序条件进行查询.列表查询主要使用SPQuery对象,以及SPList的GetItems方法,将SPQuery作为参数传递,返回查询到的列表条目集合,即SPListItemCollection类型. 在使用SPQuery进行列表查找的时候,其中一些属性指定了其查找的特性: Query属性:通过该属性指定CAML格式的筛选条件和排序条件(见上文),如果不指定,则默认返回范围内的所有条目: F…
(四)使用SPSiteDataQuery进行多列表查询 1.概述 前面介绍的列表查询有很多优势,但是它的一个缺点就是一次只能在一个列表中进行查询,在SharePoint中,提供了一个跨网站.跨列表查询的机制.通过使用SPSiteDataQuery对象,以及SPWeb的GetSiteData方法,将SPSiteDataQuery作为参数,可以进行跨网站和跨列表的查询. 它与列表查询的相同之处在于: (1) 使用同样的Query属性确定筛选条件和排序条件(不支持分组条件): (2) 使用同样的Vie…
摘要:几个操作SharePoint用户组的方法,已经测试通过,但是没有提升权限,如果没有权限的人操作,需要提升权限(提权代码附后).大家需要的话,可以参考下,写在这里也给自己留个备份~~ //创建用户组 public static bool CreatSPGroup(string strGroupName, string strGroupDescription) { try { using (SPSite site = new SPSite(SiteUrl)) { using (SPWeb we…
(六)高效合理的使用LINQ 1.DataContext中的两个属性 为了能够使用DataContext进行数据提交,在DataContext进行数据查询和操作的过程中,内部会进行数据状态的保持和追踪,这会带来一些额外的开销.如果用户仅需要进行数据读取的话,可以通过将DataContext的ObjectTrackingEnabled属性设为false(默认值为true)来避免这些维护数据状态带来的额外开销. 此外,在DataContext中还有一个DefferedLoadingEnabled属性…
(二)列表(SPList) 列表是SharePoint中最为重要的数据容器,我们一般保存在SharePoint中的所有数据,都是保存在列表中(文档库也是一种列表),因此列表对象在SharePoint的开发中是非常重要的对象之一.在SharePoint中,列表对象使用SPList表示,列表的集合使用SPListCollection表示. 如果实在难以理解SharePoint列表是怎么一回事的话,可以设想如下这种其实不准确的比喻,与传统的数据类型相比较,有如下的对应关系:列表(SPList)相当于数…
(三)视图 与传统意义上的数据视图类似,SharePoint中的列表视图指定了列表中数据的筛选条件.排序条件.分组条件.显示栏/字段.显示条目数.显示样式等内容.在SharePoint中,使用SPView表示列表视图,使用SPViewCollection表示视图的集合. 在SharePoint中,作为列表.文档库最主要的显示途径,每一个视图都对应有一个Url(即该视图所在页面的地址).事实上,当我们向页面中插入一个Web部件选择"列表和库"分类,或者直接选择插入一个"现有列表…
(四)栏/字段 SharePoint中的字段(中文版中叫做"栏")与传统的数据栏类似,也有不同类型的区别,不过SharePoint中内置的栏类型除了按照数据类型(如数字.日期和时间等)进行区分之外,更多的是从应用类型(货币.选项.查阅项等)进行分类.除内置的字段类型之外,SharePoint同样允许我们通过开发的方式实现自定义字段类型的扩展.在SharePoint中使用SPField表示字段,使用SPFieldCollection表示字段集合,内置的字段类型使用SPFieldType枚…
4.添加文件夹 文件夹的创建方法在文档库和普通列表中稍有不同. 在文档库中,与一般的集合操作相同,直接使用SPFolderCollection的Add(string name)方法即可添加文件夹,例如下面的程序在文档库的根目录中添加一个名为"技术文档"的子文件夹: 1: using(SPSite site = new SPSite("http://sp2010/book")) 2: { 3: using(SPWeb web = site.OpenWeb()) 4:…
(四)列表附件 列表的附件也是文件系统的一部分,它依附于普通列表的列表条目之上(文档库没有附件),它的操作在一些地方和文档库中文档的操作非常类似.   1.附件的读取 一个列表条目的附件可以使用SPListItem的Attachments属性访问,该属性是SPAttachmentCollection类型.这个类型在SharePoint中是一个比较特殊的类型,其特殊之处在于不存在SPAttachment类型.那么SPAttachmentCollection这个集合中存放的又是什么呢?是附件的文件名…
简介:上传文档到文档库,并对项目级授权,查看项目级权限方法         //在列表根目录下创建文件夹 public static string CreatFolderToSPDocLib(string strFolderName, string strDocLibName) { string FolderPath = string.Empty; try { using (SPSite site = new SPSite(SiteUrl)) { using (SPWeb web = site.…
前言 默认在VS2012/2013中编写SharePoint JavaScript 客户端对象模型,都没有智能感知的功能,用起来非常麻烦:其实,我们可以手动配置一下,让JavaScript可以进行智能感知,下面,让我们简单看一下整个过程. 1.在VS的Tools下面,找到Options选项,找到Text Editor下面的JavaScript,选中IntelliSense下面的References,看一下里面有没有~/Scripts/_references.js这一条,如果没有添加上(添加很简单…
获取当前站点(子站点而不是站点集)下的list var clientContext = new SP.ClientContext.get_current(); var list=clientContext.get_web().get_lists().getByTitle("List名称"); 其他子站 var clientContext = new SP.ClientContext('站点路径'); var list=clientContext.get_web().get_lists(…
何为C++对象模型? 部分: 1       语言中直接支持面向对象程序设计的部分 2       对于各种支持的底层实现机制 语言中直接支持面向对象程序设计的部分,如构造函数.析构函数.虚函数.继承(单继承.多继承.虚继承).多态等等,这也是组里其他同学之前分享过的内容.第一部分这里我简单过一下,重点在底层实现机制. 在c语言中,“数据”和“处理数据的操作(函数)”是分开来声明的,也就是说,语言本身并没有支持“数据和函数”之间的关联性.在c++中,通过抽象数据类型(abstract data…
最近有个需求,写个定时迁移文件夹的小程序,因为计时器任务比较繁琐,所以选择了控制台程序.然后,用windows的计划任务执行,也许,会有广大朋友需要类似的功能,简单的分享一下代码逻辑,功能非常简单,希望大家不要见笑. //提升权限代码 SPSecurity.RunWithElevatedPrivileges(delegate() { //提升权限的核心代码 }); //创建网站集和网站对象 using (SPSite site = new SPSite(siteUrl)) { using (SP…
使用client对象模型读取SharePoint列表数据 client对象模型提供了强有力的方式.从远程client应用程序管理列表. 1. 管理员身份打开VS,新建项目Windows窗口应用程序,命名ReadSPListData,确保选择.NET Framework 3.5. 2. 加入控件. 控件类型: 3. 你必须加入一个类ProductInfo. namespace ReadSPListData { class ProductInfo { public string productNam…
 博客地址:http://blog.csdn.net/FoxDave 近来阅读SharePoint 2013开发一书,带着与大家一起分享其中的内容. 部署场景: 本地部署(On-Premise Deployment).O365部署(Office 365 Deployment).托管部署(Hosted Deployment)和混合部署(Hybrid Deployment). 包场景: 完全信任的场解决方案(Full-Trust Farm Solution).部分信任的沙盒解决方案(Partia…