SharePoint 2010 获取列表中所有数据(包括文件夹内)的方法
2014-02-28 22:48
531 查看
转: http://blog.csdn.net/wangwenism/article/details/8751411
SharePoint的列表能存储文件以及文件夹,用户使用的时候,经常会建几个分类文件夹,然后分别存放不同类型的文件,以方便查阅管理。
当文件夹以及文件越来越多的时候,用户就会有搜索特定文档的要求,用户通常都不希望去每个文件夹分别查询,所以我们必须设计一个单独的查询模块去获取列表中包括每个文件夹里的所有数据。
用sharepoint自带的搜索是一种解决方案,也可以利用SharePoint对象模型对整个列表进行查询。
以下介绍2种查询方法。
1. 如果是用SPDateSource查询的话,SPDateSource默认的数据查询范围是Default,即显示列表当前目录下的所有文件以及文件夹,并不包括文件夹里的文件,这个查询范围是个名为SPViewScope的枚举类型,详细解释如下图:
所以我们可以将范围值定义成Recursive 或 RecursiveAll 即可。如下:
[html]
view plaincopyprint?
SPDataSource ds = currentListViewWebPart.DataSource as SPDataSource; ... ds.Scope = SPViewScope.Recursive;
2. 如果是用SPQuery查询的话,有个ViewAttributes属性可以设置范围,范围的默认值也是Default,枚举值和上面的相同,代码写法如下:
[plain]
view plaincopyprint?
private SPListItemCollection GetItems(SPList list) { SPQuery query = new SPQuery(); query.ViewAttributes = "Scope=\"RecursiveAll\""; SPListItemCollection itemCollection = list.GetItems(query); return itemCollection; }
如果想指定单独的文件夹进行查询,SPQuery有个folder属性,指定特定的文件夹名就可以了。
SharePoint的列表能存储文件以及文件夹,用户使用的时候,经常会建几个分类文件夹,然后分别存放不同类型的文件,以方便查阅管理。
当文件夹以及文件越来越多的时候,用户就会有搜索特定文档的要求,用户通常都不希望去每个文件夹分别查询,所以我们必须设计一个单独的查询模块去获取列表中包括每个文件夹里的所有数据。
用sharepoint自带的搜索是一种解决方案,也可以利用SharePoint对象模型对整个列表进行查询。
以下介绍2种查询方法。
1. 如果是用SPDateSource查询的话,SPDateSource默认的数据查询范围是Default,即显示列表当前目录下的所有文件以及文件夹,并不包括文件夹里的文件,这个查询范围是个名为SPViewScope的枚举类型,详细解释如下图:
Member name | Description | |
---|---|---|
Default | Show only the files and subfolders of a specific folder. | |
Recursive | Show all files of all folders. | |
RecursiveAll | Show all files and all subfolders of all folders. | |
FilesOnly | Show only the files of a specific folder. |
[html]
view plaincopyprint?
SPDataSource ds = currentListViewWebPart.DataSource as SPDataSource; ... ds.Scope = SPViewScope.Recursive;
SPDataSource ds = currentListViewWebPart.DataSource as SPDataSource; ... ds.Scope = SPViewScope.Recursive;
2. 如果是用SPQuery查询的话,有个ViewAttributes属性可以设置范围,范围的默认值也是Default,枚举值和上面的相同,代码写法如下:
[plain]
view plaincopyprint?
private SPListItemCollection GetItems(SPList list) { SPQuery query = new SPQuery(); query.ViewAttributes = "Scope=\"RecursiveAll\""; SPListItemCollection itemCollection = list.GetItems(query); return itemCollection; }
private SPListItemCollection GetItems(SPList list) { SPQuery query = new SPQuery(); query.ViewAttributes = "Scope=\"RecursiveAll\""; SPListItemCollection itemCollection = list.GetItems(query); return itemCollection; }
如果想指定单独的文件夹进行查询,SPQuery有个folder属性,指定特定的文件夹名就可以了。
相关文章推荐
- Ubuntu登陆不进去(已解决)
- glrotatef如何绕自身轴旋转
- Oracle开窗函数
- Number Range 管理之并行缓冲
- JS关于对时间的处理
- Effective C++ 读书笔记(一)
- 与师兄交流后的感想
- C++ 字符串问题
- PAT 1028. List Sorting
- Xcode 5 如何禁用某个文件ARC(Automatic Reference Counting)
- 移动开发者必须了解的10大跨平台工具
- 北理工计算机学院2011级Java试题、部分答案及分析
- NYOJ558 一二三
- ftp服务器
- jbpm4.4表结构
- 事务的隔离级别
- [C++] Boost智能指针——boost::scoped_ptr(使用及原理分析)
- NYOJ558 一二三
- 利用NS2的产生随机数机制来实现对链路的动态设置(连接建立时间,延迟)
- Android自定义控件实现及其布局