sharepoint 2010 获取列表文件夹所有数据方法(本文转自http://blog.csdn.net/cxx2325938/article/details/8425166,我进行了补充说明)

在sharepoint的数据列表查询中,一般都是采用CAML语言的方式来做查询,也就是平时我们用得比较多的是SPQuery.平时我们用对象模型splistitem,获取到的数据,都是列表根目录下的数据,而文件夹里面的数据,就没有包含进来,如果我们需要获取到文件夹里面的数据,以往我们都是一层层的去遍历,并且把数据添加到list中来,这种方式非常影响性能,效率也不高。

在SPQuery中,有提供了一个方法,可以非常容易的获取到文件夹里面的数据,它有个Folder以及ViewAttributes属性,也就是我们下面方法的GetItems(SPList list)

private void BindData()        

{            

  SPWeb web = SPContext.Current.Web;            

  SPList list = web.Lists["我的文档"];            

   SPListItemCollection items = GetItems(list);            

  GridView1.DataSource = items.GetDataTable();            

  GridView1.DataBind();        

}        

 

private SPListItemCollection GetItems(SPList list)        

{            

  SPQuery query = new SPQuery();            

  query.Folder = list.RootFolder; ;            

  query.ViewAttributes = "Scope=\"RecursiveAll\"";            

  SPListItemCollection itemCollection = list.GetItems(query);            

  return itemCollection;        

}

 

附上一些查询参数的说明和常用的参数

o    ViewAttributes
a. Scope='Default' : 只顯示指定文件夾下的項目及子文件夾
b. Scope='FilesOnly' : 只顯示指定文件夾下的項目
c. Scope='Recursive' : 顯示所有項目,不顯示文件夾
d. Scope='RecursiveAll' : 顯示所有項目和所有子文件夾

o    RowLimit
返回多少條記錄

CAML语法-Query写法

元素 说明
And 并且
BeginsWith 以某字符串开始的
Contains 包含某字符串
Eq 等于
FieldRef 一个字段的引用 (在GroupBy 中使用)
Geq 大于等于
GroupBy 分组
Gt 大于
IsNotNull 非空
IsNull 空
Leq 小于等于
Lt 小于
Neq 不等于
Now 当前时间
Or 或
OrderBy 排序
Today 今天的日期
TodayIso 今天的日期(ISO格式)
Where Where子句

posted on 2013-01-25 21:57  Flying Arrow  阅读(290)  评论(0编辑  收藏  举报

导航