写这篇文章的初衷是因为其他的业务系统要调用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. Chart控件使用初步

    学习了Chart控件的初步使用方法,生成柱形图和饼图.    <asp:Chart ID="Chart1" runat="server" Width=&q ...

  2. Mac 系统上安装Protocol buffer

    1. cd /Software/protobuf-2.5.0 2.sudo ./configure --prefix=$/Software/protobuf-2.5.0 3.sudo make 4.s ...

  3. PHP + Smarty + html5 构建Wap应用

    一 简介     Smarty是一个PHP编写的模板引擎(template engine),主要用于构建web应用程序的表示层.Smarty的主页是http://www.smarty.net/down ...

  4. NetBeans IDE集成Maven

    NetBeans6.7更新版本已经内置对Maven支持.如遇以前的版本,Maven插件在插件管理器中可用.我们正在使用NetBeans在这个例子中使用6.9. 在NetBeans一些特点如下 您可以从 ...

  5. JsonObject和Gson详解

    参考文件:http://www.cnblogs.com/xwdreamer/archive/2011/12/16/2296904.html一.JsonObject 1.JAR包简介 要使程序可以运行必 ...

  6. C# wkhtmltopdf 将html转pdf

    一.转换程序代码如下: public string HtmlToPdf(string url) { bool success = true; // string dwbh = url.Split('? ...

  7. aspose.word 使用简单方法

    aspose.word使用简单方法 概念介绍 使用aspose生成word报表步骤: 加载word模板 提供数据源 填充 加载模板 提供了4种重载方法 1 2 3 4 5 public Documen ...

  8. VS2013 此模板尝试加载组件程序集”NuGet.VisualStudio.interop,Version=1.0.0.0 的解决办法

    此模板尝试加载组件程序集 NuGet.VisualStudio.Interop   分析错误 既然错误信息提示模板尝试加载组件程序集,那说明NuGet.VisualStudio.Interop程序集不 ...

  9. SecureCRT同时发送命令到所有主机

    有时候我们需要在多台服务器上执行相同的命令,比如安装软件,复制,粘贴,删除等等,但一台一台的去操作工作量就太大了,我们可以借助SecureCRT这款客户端远程连接工具实现这样的要求! 相关阅读: 如何 ...

  10. linux 上安裝lnmp

    1.確保有一台服務器可以正常運行 2.熟練知道一些基本的命令 3.這裡我以lnmp集成環境為例 https://lnmp.org/install.html 4.安裝大約30分鐘左右 5.安裝完畢,訪問 ...