写这篇文章的初衷是因为其他的业务系统要调用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. Speeding up image loading in WPF using thumbnails

    Technorati Tags: wpf, thumbnails, image, performance, slow, BitmapImage During a recent WPF session ...

  2. 如何将Mac系统OS X Yosemite装到外部磁盘?(转)

    有Mac用户想了解是否可以将 OS X Yosemite 装到替代的外部磁盘,答案是肯定的,有需求的用户,可以按照本篇教程逐步进行. 前面我已经写过一篇文章介绍了如何安装 OS X Yosemite ...

  3. Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】

    一.安装Golang的SDK 在官网 http://golang.org/ 直接下载安装包安装即可.下载pkg格式的最新安装包,直接双击运行,一路按照提示操作即可完成安装. 安装完成后,打开终端,输入 ...

  4. ZARM in Linux & MIUI

    zram是Linux内核的一个模块,之前被称为“compcache”.zram通过在RAM内的压缩快设备上分页,直到必须使用硬盘上的交换空间,以避免在磁盘上进行分页,从而提高性能.由于zram可以用内 ...

  5. 【转】【WPF】WPF绑定用法

    一.简介 为了后面行文顺利,在进入正文之前,我们首先对本文所涉及到的绑定知识进行简单地介绍.该节包含绑定的基本组成以及构建方式. WPF中的绑定完成了绑定源和绑定目标的联动.一个绑定常常由四部分组成: ...

  6. 嵌入式开发之hi3516---GV7601 SPI通信问题

    http://blog.csdn.net/qq_29350001/article/details/52669964 http://blog.csdn.net/zqj6893/article/detai ...

  7. QTreeView 限制特定的深度、特定深度下的列 是否可以编辑

    QTreeView 限制特定的深度.特定深度下的列 是否可以编辑 # # C_TreeView # 在QTreeView基础上增加限制特定深度.特定列是否可以编辑 # class C_TreeView ...

  8. interpro 数据库

    interpro 通过整合多个蛋白相关的数据库,提供了一个方便的对蛋白序列进行功能注释的平台,功能注释的内容包括蛋白质家族预测,domain 和 结合位点预测 interoro 在整合多个数据库的同时 ...

  9. Spring Cloud 微服务的那点事

    什么是微服务 微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”. 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调 ...

  10. git fetch , git pull

    要讲清楚git fetch,git pull,必须要附加讲清楚git remote,git merge .远程repo, branch . commit-id 以及 FETCH_HEAD. 1. [g ...