zoukankan      html  css  js  c++  java
  • 用好ProcessBatchData (1)概述

    通常,我们在SharePoint中创建、更新,删除Item,文档或者文件夹时,都有对应的方法,比如创建一个Item:

                            SPListItem item = list.Items.Add(web.Url + "/" + list.RootFolder.Url,SPFileSystemObjectType.File,"myitem001");
                            item["Title"] = "item001";
                            item.Update();

    创建一个folder:

                            SPListItem item = list.Items.Add(web.Url + "/" + list.RootFolder.Url,SPFileSystemObjectType.Folder,"myfolder001");
                            item.Update();

    创建一个从folder继承来的Content Type:

                            SPListItem item = list.Items.Add(web.Url + "/" + list.RootFolder.Url,SPFileSystemObjectType.Folder,"myfolderContentType001");

                            item["ContentTypeId"] = myCType.Id;
                            item.Update();

    但是当需要做大量的操作时,如果用上面的方法,效率就会比较低,比如Update,实际上SharePoint是调用了一个存储过程,这样会造成频繁的向服务器发起请求,严重增加了服务器的负担,最好的方法就是使用批量操作的方法:ProcessBatchData,当然也可以使用web services,不过web services的方法不在本文的讨论范围内。

    msdn上有对该方法的描述(http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.processbatchdata.aspx),但是总觉得不是很详细,而且实例太少,本文结合自己在实际使用中遇到的问题,尽量详细的对该方法做具体的说明,使我们能够用好ProcessBatchData方法。

    ProcessBatchData方法本身很简单:

    string strReturnValue = web.ProcessBatchData(strBatchOperation)

    主要在构建strBatchOperation上,刚刚开始使用该方法的人,往往觉得不好使用,因为某个参数或者值不对,就会导致该方法失败,但是如果用好了,其实该方法会使批量操作的性能大大提高。

    strBatchOperation的格式如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <ows:Batch OnError="Continue">
      <Method ID='0'>
        <SetVar Name="Cmd">Save</SetVar>
        <SetVar Name="ID">New</SetVar>
        <SetList>af653a38-7a6a-455c-a295-1604c4104a61</SetList>
        <SetVar Name="urn:schemas-microsoft-com:office:office#ContentType">Item子类型</SetVar>
        <SetVar Name="urn:schemas-microsoft-com:office:office#Title">Item001</SetVar>
        <SetVar Name="owsfileref">/ProjectCenter/ATP/Lists/Schedules/folderLevel1/Item001</SetVar>
      </Method>
    </ows:Batch>

    其中:

    OnError: 表示遇到错误是继续还是跳出,有两个选项:

    Return:默认值,表示遇到错误即返回;

    Continue:表示遇到错误后,记录错误然后继续。

    Method:一个Method表示一个操作,必备的参数是方法的ID,每个要不同

    SetVar: 设置栏位(Field)值,用来更新栏位值或者使用该栏位值搜索到对象

    Cmd:表示操作类型,有三种:Save,Delete和Moderate

        Save:根据ID值是New还是ID值,来确定是否新建还是更新

        Delete: 删除

        Moderate:设置审批状态,同时也可以用来设置属性值,和Save的区别后面再描述

    ID:如果是新建,就为New,如果是更新,就填写待更新的对象的ID值,注意不是GUID

    以“urn:schemas-microsoft-com:office:office#”开头的变量,表示自定义Field、ContentType或Title,需要注意的是,此处需要填写Field的内部值

    SetList:列表GUID值,表示在该列表下操作。

  • 相关阅读:
    Mac OS X 10.10(yosemite)更新后,cocoapods出错, 及cocoapods更新至0.34后, 错误情况整理
    如何删除已上线的IAP项
    Automator一键生成所需的iOS 图片icon
    django-simple-captcha 组件使用
    git 本地推送远程仓库报错: error: failed to push some refs to 'https://github.com/yangtuothink/mxonline.git'
    git 提交报错 : The file will have its original line endings in your working directory.
    Django 静态文件相关设置
    Xadmin 组件基础使用以及全局配置
    安装 xadmin 报错: Command "python setup.py egg_info" failed with error code 1 in C:UsersPythonAppDataLocalTemppip-install-1k1byg0pxadmin
    IntegrityError at /admin/users/userprofile/add/ (1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6_
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/1803257.html
Copyright © 2011-2022 走看看