SharePoint-如何使用列表Web服务插入新项目?
时间:2020-03-05 18:59:25 来源:igfitidea点击:
我有一个包含2个文本字段和一个选择字段的列表。如何使用Lists.asmx Web服务插入新项目?我可以对list.asmx服务进行Web引用,因此可以假定这是已知的。
我想要一个完整的示例,包括用于CAML查询的代码和XML。理想情况下,示例将使用C#。
解决方案
回答
使用Lists Web服务将项目插入SharePoint列表确实很棘手。由于此方法具有以下形式:XML输入,XML输出,因此很难正确获取参数。
首先,我们应该看一下列表定义。可以使用方法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"。在"方法"内部,放置了为每个字段指定值的Field元素。例如,"标题"字段获取值" 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。由于它是在公司时间内开发的,因此不允许在此处发布。