代码之家  ›  专栏  ›  技术社区  ›  Brian Lyttle

SharePoint-如何使用列表Web服务插入新项目?

  •  6
  • Brian Lyttle  · 技术社区  · 16 年前

    我有一个包含两个文本字段和一个选项字段的列表。如何使用lists.asmx Web服务插入新项目?我可以在Web上引用lists.asmx服务,这样您就可以假定这是已知的。

    我想要一个完整的例子,包括caml查询的代码和XML。理想情况下,样品将使用C。

    1 回复  |  直到 16 年前
        1
  •  16
  •   jan.vdbergh    16 年前

    使用ListsWeb服务将项目插入到SharePoint列表确实很棘手。因为这个方法的形式是:xml-in,xml-out,所以很难获得正确的参数。

    首先,您应该看看列表定义。可以使用getList()方法进行检索,如下所示:

    XmlNode listXml = sharePointLists.GetList(listName);
    File.WriteAllText("listdefinition.xml", listXml.OuterXml);
    

    重要信息:这里是字段的名称及其数据类型。字段名永远不会与您在SharePoint GUI中看到的相同。一个很好的例子是标题字段,它用于列表的第一个字段。

    现在您知道了,您可以创建查询以转到SharePoint。一个例子:

    <Batch OnError="Continue">
        <Method ID="1" Cmd="New">
            <Field Name="Title">Abcdef</Field>
            <Field Name="Project_x0020_code">999050</Field>
            <Field Name="Status">Open</Field>    
        </Method>
    </Batch>
    

    batch元素是XML的根元素。你可以把不同的方法放进去。它们应该得到一个唯一的ID(用于向您报告错误)和一个命令,例如“new”或“update”。在方法内部,您将放置指定每个字段值的字段元素。例如,标题字段获取值“abcdef”。小心使用getList()返回的确切名称。

    要在SharePoint上执行查询,请使用updateListItems()方法:

    XmlNode result = sharePointLists.UpdateListItems(listDefinition.Name, updates);
    

    返回值是包含每个更新状态的XML片段。例如:

    <Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
        <Result ID="1,New">
        <ErrorCode>0x00000000</ErrorCode>
        <z:row ows_ContentTypeId="0x010036F3F587127F1A44B8BA3FEFED4733C6" 
             ows_Title="Abcdef" 
             ows_Project_x0020_code="999050" 
             ows_Status="Open" 
             ows_LinkTitleNoMenu="Abcdef" 
             ows_LinkTitle="Abcdef" 
             ows_ID="1005"            
             ... 
             xmlns:z="#RowsetSchema" />
        </Result>
    </Results>
    

    您可以分析它并查看错误代码以查看哪些方法失败。

    在实践中,我创建了一个包装类,它为我处理所有脏的细节。不幸的是,这是我老板的,所以我不能和你分享。

    这个包装类是内部实用程序的一部分,用于从项目数据库中检索信息并将其发布到SharePoint。因为它是在公司期间开发的,所以我不能在这里发布。