写这篇文章的初衷是因为其他的业务系统要调用sharepoint的文档库信息,使其他的系统也可以获取sharepoint文档库的信息列表。在这个过程中尝试过用linq to sharepoint来获取文档列表,不过看了其他人对linq在sharepoint的分页效率的评价,不是很好,详情请戳这里。所以尝试用CAML来分页,在此记录以备忘。测试了一下,两万条分页毫无压力。

代码如下:

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls; namespace CAMLDemo.Layouts.CAMLDemo
{
public partial class ApplicationPage1 : LayoutsPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
SPWeb web = SPContext.Current.Web;
SPList docLib = web.Lists["文档"]; SPQuery query = new SPQuery(); #region 1.文档库下所有文档及文件夹
//递归查询,加了下面的参数的话会将文档库的所有文档及文件夹查询出来
//否则只查询根目录下的文档及文件夹
//query.ViewAttributes = "Scope='RecursiveAll'";
#endregion #region 2.文档库下所有的文档
//查询文档库下的文档
//query.ViewAttributes = "Scope='Recursive'"; ////或者 //query.ViewAttributes = "Scope='RecursiveAll'";
//query.Query =
// @"<Where>
// <Eq>
// <FieldRef Name='FSObjType' />
// <Value Type='Integer'>0</Value>
// </Eq>
// </Where>";
#endregion #region 3.文档库下的所有文件夹
//查询文档库下的所有文件夹
//query.ViewAttributes = "Scope='RecursiveAll'";
//query.Query =
// @"<Where>
// <Eq>
// <FieldRef Name='FSObjType' />
// <Value Type='Integer'>1</Value>
// </Eq>
// </Where>";
#endregion #region 4.模糊查询指定名称的项目
//模糊查询指定名称的项目
//query.ViewAttributes = "Scope='RecursiveAll'";
//query.Query =@"
//<Where>
// <Contains>
// <FieldRef Name='FileLeafRef'/>
// <Value Type='Text'>测试</Value>
// </Contains>
//</Where>";
#endregion #region 5.查询指定文件夹下的项目
//查询指定文件夹下的项目
query.Folder = docLib.RootFolder.SubFolders["system"];
#endregion #region 翻页逻辑,请自行修改
//每页的文档数
query.RowLimit = ; //用ViewState来存放上次翻页后,下一页第一条记录的ID号,
//将此ID号赋值给p_ID.作为本次翻页的第一条记录ID。
string p_ID = (string)ViewState["itemIndex"]; SPListItemCollectionPosition position;
if (!string.IsNullOrEmpty(p_ID))
position = new SPListItemCollectionPosition(string.Format("Paged=TRUE&p_ID={0}", p_ID));
else
position = new SPListItemCollectionPosition(string.Format("Paged=TRUE&p_ID=0"));//从第一页开始
query.ListItemCollectionPosition = position; SPListItemCollection items = docLib.GetItems(query); ViewState["itemIndex"] = GetPageItemID(items);
#endregion #region 显示
string html = "";
foreach (SPListItem item in items)
{
html += item.Name + "<br>";
} lblText.Text = html;
#endregion
} string GetPageItemID(SPListItemCollection items)
{
try
{
string page = items.ListItemCollectionPosition.PagingInfo.Split(new string[] { "&p_ID=" }, StringSplitOptions.RemoveEmptyEntries)[].Split('&')[];
return page;
}
catch
{
return "";
}
}
}
}

批量添加记录代码

            SPWeb web = SPContext.Current.Web;

            web.AllowUnsafeUpdates = true;

            SPList list = web.Lists["test"];

            //for (int i = 1; i < 20000;i++ )
//{
// SPListItem oItem1 = list.Items.Add();
// oItem1["Title"] = i;
// oItem1.Update();
//} Guid id = list.ID; StringBuilder sbDelete = new StringBuilder();
sbDelete.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Batch>"); for (int i = ; i <= ; i++)
{
sbDelete.Append("<Method>");
sbDelete.Append("<SetList Scope=\"Request\">" + id + "</SetList>");
sbDelete.Append("<SetVar Name=\"ID\">New</SetVar>");
sbDelete.Append("<SetVar Name=\"Cmd\">Save</SetVar>");
sbDelete.Append("<SetVar Name=\"urn:schemas-microsoft-com:office:office#Title\">item" + i + "</SetVar>");
sbDelete.Append("</Method>");
} sbDelete.Append("</Batch>"); try
{
web.ProcessBatchData(sbDelete.ToString());
}
catch
{ throw;
} web.AllowUnsafeUpdates = false;

Sharepoint文档的CAML分页及相关筛选记录的更多相关文章

  1. 在Outlook中查看预览SharePoint文档库的文档

    本文概况 阅读时间: 约2分钟 适用版本:SharePoint Server 2010及以上 面向用户:普通用户,管理员 难度指数:★★☆☆☆ 在日常工作中,总有一些常用的文档需要经常打开查看,其实我 ...

  2. 360安全卫士造成Sharepoint文档库”使用资源管理器打开“异常

           备注:企业用户还是少用360为妙        有客户反馈:部门里的XP SP2环境客户机全部异常,使用资源管理器打开Sharepoint文档库,看到的界面样式很老土,跟本地文件夹不一样 ...

  3. SharePoint 文档库实现文件夹拖放到文档库

    打开文档库-> 选择文件夹-> 在Ribbon中选择“库(list)”-> 在右边可以看到打开方式-> 选择用资源管理器打开-> 在新打开的资源管理器中可能实现对文夹的拖 ...

  4. 修改Sharepoint 文档库列表点击Excel文件默认跳转到Excel Service服务 xlviewer.aspx页面

    在Sharepoint 文档库中,当点击库中的一个Excel文件时,Sharepoint默认为转跳到Excel Services上,无论是Sharepoint 的是否开启了Excel Service, ...

  5. Sharepoint 文档知识管理系统--Word在试图打开文件时遇到错误

    在系统开发中,遇到问题:SharePoint 2010与Office 2010安装在一台服务器上,当用Office打开SharePoint文档库中的文档时,遇到“Word在试图打开文件时遇到错误,请尝 ...

  6. C#/VB.NET 在Word文档中插入分页符

    分页符是分页的一种符号,上一页结束以及下一页开始的位置.通查用于在指定位置强制分页.本文将分为两部分来介绍如何在Word文档中插入分页符.并附上C#/VB.NET以供参考,详情请阅读以下内容. 在特定 ...

  7. 【SharePoint 文档管理解决方案设计系列一】文档使用分析

    在我们在 SharePoint 端设计文档管理解决方案之前我们要了解目前客户在他们已有的系统里是怎么对文档进行使用和管理的.只有了解了当前的使用情况才能根据客户的需求量身定做一套适合他们的有效的解决方 ...

  8. SharePoint文档库文件夹特殊字符转义

    当我们在SharePoint网站文档库中新建文件夹时包含了~ " # % & * : < > ? / \ { | }字符时(一共15个), 或者以.开头或者结束,或者包含 ...

  9. mongodb 对内嵌文档(数组) group分页查询,并设置查询条件

    文档示例Account的其中一条记录: // collection: Account { "_id" : ObjectId("5843e38e535f3708f759b2 ...

随机推荐

  1. asp.net请求管道和页面生命周期

  2. TCP长连接保持连接状态TCP keepalive设置

    如有转载,请注明出处:http://blog.csdn.net/embedded_sky/article/details/42077321 作者:super_bert@csdn 对于TCP长连接保活是 ...

  3. USB学习笔记连载(十二):USB描述符

    USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能.计算机通过这些描述符来获得USB设备的功能. USB描述符包括: USB标准设备描述符,USB集线器描述符.H ...

  4. 关于Unity中的光照(三)

    法线贴图 次时代游戏用的比较多 1:法线贴图是凹凸贴图技术上 的一种应用,有时也称为Dot3(仿立体)凹凸纹理贴图;2: 法线贴图是不增加多边形的情况下,增强模型的细节;3: 法线贴图是高精度模型导出 ...

  5. window.location.href 跳转失败

    我恨这个问题,因为困扰已久,做为一个不称职的半开发人员,对前端非常不熟,程度仅限于alert调试的水平 这个问题似乎是IE的一个傻逼哄哄的BUG引起的,在AJAX盛行的今天,当在返回success状态 ...

  6. JNDI是什么?

    JNDI,全称 Java Naming and Directory Interface. 以数据库的配置为例,简单的说,就是将对数据库的连接设置(driverClass.URL.user.passwo ...

  7. Android多国语言的value文件夹命名方式

    在res目錄下建立不同名稱的values文件來調用不同的語言包Values文件匯總如下:中文(中國):values-zh-rCN中文(台灣):values-zh-rTW中文(香港):values-zh ...

  8. Java 訪问权限控制:你真的了解 protected keyword吗?

    摘要: 在一个类的内部,其成员(包含成员变量和成员方法)是否能被其它类所訪问,取决于该成员的修饰词:而一个类是否能被其它类所訪问,取决于该类的修饰词.Java的类成员訪问权限修饰词有四类:privat ...

  9. XP远程桌面连接2008提示:远程计算机需要网络级别身份验证,而您的计算机不支持该验证

    原文链接:http://kong62.blog.163.com/blog/static/1760923052011319113044653/ 解决办法: 修改注册表2个地方 开始-运行-regedit ...

  10. R语言数据框小技巧

    当我们想要把数据框的行或者列按照指定的顺序排列时,可以通过行名称或者列名称快速排列 data <- data.frame(matrix(1:9, ncol=3)) rownames(data) ...