我有一个包含2个文本字段的列表和一个选择字段。如何使用Lists.asmx Web服务插入新项目?我可以对lists.asmx服务做一个web引用,所以你可以假设这是已知的。SharePoint - 如何使用列表Web服务插入新项目?
我想要一个完整的例子,包括CAML查询的代码和XML。理想情况下,示例将使用C#。
我有一个包含2个文本字段的列表和一个选择字段。如何使用Lists.asmx Web服务插入新项目?我可以对lists.asmx服务做一个web引用,所以你可以假设这是已知的。SharePoint - 如何使用列表Web服务插入新项目?
我想要一个完整的例子,包括CAML查询的代码和XML。理想情况下,示例将使用C#。
使用列表web服务将项目插入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(用于向您回报错误)和一个命令,例如可以是“新建”或“更新”。在方法内部,您可以将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>
您可以分析这一点,看看错误代码,看看哪些方法失败。
实际上,我已经创建了一个包装类,为我处理所有肮脏的细节。不幸的是,这是我的雇主所有,所以我不能与你分享。
此包装类是内部实用程序的一部分,用于从我们的项目数据库检索信息并将其发布到SharePoint。由于它是在公司时间开发的,我不能在这里发布。
这个包装类是你的公司在产品中包含的东西,还是仅仅是你创建的内部工具类?只是好奇 - 我的雇主不会在乎我是否共享实用程序代码,但我为一个非常进步的组织工作。 – cori 2008-09-18 12:46:13