• 通过WebService操作SharePoint列表数据


    通过Webservice add/update/delete SharePoint的列表数据,当然需要使用Lists.asmx 服务了,此服务为增删改只提供了一个方法UpdateListItems,此方法的声明非常简单:

    public XmlNode UpdateListItems (
        string listName,
        XmlNode updates
    )

    对于此方法的说明可以参考MSDN:

    http://msdn.microsoft.com/en-us/library/lists.lists.updatelistitems(v=office.14).aspx

         方法简单不代表逻辑简单,增删改的操作逻辑都封装在Xml中,使用时千变万化的xml参数让人相当费解,经过这些天的不懈努力,终可窥得其中些许奥秘!根据可能操作的不同情况,可总结为以下表格,每一种情况可参考表后的示例。

     

    Add

    Update

    Delete

    Generic list item

    1

    3

    4

    Generic list item(in folder)

    2

    Folder(Generic list)

    5

    6

    Folder(document library)

    7

    Document

    Unsupported

    3

    1) Add Generic list item

    <Batch OnError="Continue">
         <Method ID="1" Cmd="New">
              <Field Name="ID">New</Field>
              <Field Name="URL">http://192.168.1.1</Field>
              <Field Name="Comments">Redmond</Field>
         </Method>
    </Batch>

    注:这是最常见的格式了.

    2) Generic list item(in folder)

    <Batch OnError="Continue" RootFolder="/Lists/Links/folder">
        <Method ID="1" Cmd="New">
            <Field Name="ID">New</Field>
            <Field Name="URL">http://192.168.1.1</Field>
            <Field Name="Comments">Redmond</Field>
        </Method>
    </Batch>

    注:这里的RootFolder格式必须为’/Lists/listName/folderpathOrName'(RootFolder属性在MSDN中未提到,但确实是有效的操作属性)

    3) Update ListItem

    <Batch OnError="Continue">
        <Method ID="1" Cmd="Update">
            <Field Name="ID">1</Field>
            <Field Name="URL">http://192.168.1.1</Field>
            <Field Name="Comments">Redmond</Field>
        </Method>
    </Batch>

    4) Delete generic listitem or folder

    <Batch OnError="Continue">
        <Method ID="1" Cmd="Delete">
            <Field Name="ID">1</Field>
         </Method>
    </Batch>

    注:如果删除的是文件夹,则文件夹内的数据项也全部删除

    5) Add folder

    <Batch OnError="Continue">
         <Method ID="1" Cmd="New">
          <Field Name="ID">New</Field>
          <Field Name="FSObjType">1</Field>
          <Field Name="BaseName">folderName</Field>
      </Method>
    </Batch>

    注:其中BaseName格式为:folderName 或者pFolderName/subFolderName,不得以’/’开头,支持文档库操作。

    6) Update folder

    <Batch OnError="Continue">
        <Method ID="1" Cmd="Update">
          <Field Name="ID">New</Field>
          <Field Name="FSObjType">1</Field>
          <Field Name="BaseName">newfolderName</Field>
        </Method>
    </Batch>

    注:这里只能修改文件夹名称,其中BaseName格式为:folderName(与创建文件夹时指定路径不同),不得包含’/’等特殊字符,支持文档库操作。

    7) Remove document library folder or document

    <Batch OnError="Continue">
         <Method ID="1" Cmd="Delete">
              <Field Name="ID">New</Field>
              <Field Name="FileRef">documentpath</Field>
         </Method>
    </Batch>

    注:这里的FileRef的格式可以为全路径格式:

    http://hostOrIP:port/siteName/documentLibraryName/documentNameORFolderName

    也可以为相对路径:

    /documentLibraryName/documentNameORFolderName

    或者

    documentLibraryName/documentNameORFolderName

    名称大小写不敏感.

         其它:不支持文档的上传添加操作,此部分可参考Copy.asmx服务的CopyIntoItems方法;不支持文档文件的更新操作,仅支持对文档属性字段的更新操作,此操作与generic list的更新相同。

         真的是相当费解的设计,在使用之前最好针对不同的情况封装为方法,这样使用的时候就不用再费解了。

  • 相关阅读:
    格式布局
    tp框架之文件上传
    tp框架之验证码
    tp框架之自动验证表单
    tp框架之留言板练习
    tp框架之session
    tp框架之登录验证
    tp框架之函数调用
    tp框架之分页与第三方类的应用
    tp框架之AJAX
  • 原文地址:https://www.cnblogs.com/Areas/p/2745154.html
Copyright © 2020-2023  润新知