繁体   English   中英

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

[英]SharePoint - How do insert new items using the list web service?

我有一个包含2个文本字段的列表和一个选择字段。 如何使用Lists.asmx Web服务插入新项? 我可以对lists.asmx服务进行Web引用,因此您可以假设这是已知的。

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

使用列表Web服务将项目插入SharePoint列表确实很棘手。 由于此方法的格式为:XML in,XML out,因此很难获得正确的参数。

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

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

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

既然您知道这一点,就可以创建查询以转到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(用于向您报告错误)和一个命令,例如可以是“新建”或“更新”。 在Method中,您可以放置​​Field元素,为每个字段指定值。 例如,Title字段获取值“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>

您可以解析它并查看ErrorCode以查看哪些方法失败。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM