我需要创建一个Infopath表单,用户可以使用该表单创建帖子并更新Sharepoint列表。
我找到了列表GUID和Lists.asmx webbservice。我已经确定我是管理员,对该列表有完整的权利。该列表是一个基本的2列(1行文本)。
我创建了CAML模板:
<?xml version="1.0" encoding="UTF-8"?>
<Batch OnError="Continue">
<Method ID="1" Cmd="New">
<Field Name="Field1"></Field>
<Field Name="Field2"></Field>
</Method>
</Batch>
使用CAML的两个数据连接:
XML-file - loading the CAML.
Send data using Lists.asmx-service - "UpdateListItems"-method.
UpdateListItems的参数:tns:listName连接到包含GUID的变量。 tns:在加载的CAML中连接到/ Batch的更新,包括XML子树。
我使用XMLfile-connection(CAML)添加了一个重复表,我可以在其中填充新Listitem的列值。
我添加了一个触发使用dataconnection和“UpdateListItems”-method的操作规则的按钮。该按钮也会被测试触发其他规则操作,因此按钮本身可以正常工作。
当我尝试将新项目发布到sharepoint-list时,我没有收到任何错误消息,一切似乎都正常,但没有创建任何项目。
如果我更改任何内容,例如GUID或其他内容,我会收到不同的错误消息,因此它显示为Infopath认为一切正常,但Sharepoint没有对我的列表做任何事情。没有创建任何项目。
任何人都知道这会出现什么问题?
编辑:我使用了来自同一个Sharepoint服务器的其他Web服务而没有任何问题。
答案 0 :(得分:2)
这个建议可能有点过时了,但是......
我遇到了类似的问题。通过在SharePoint服务器上使用ULSViewer并阅读MSDN文档,我发现CAML字段标记中的Name属性应该是Sharepoint在创建时分配给列表列的内部名称。在我的情况下,我不得不改变CAML:
<Field Name="pub1">
to
<Field Name="_x0066_ub1">
答案 1 :(得分:1)
我遇到了同样的问题 - 您必须将Web服务提交到网站/_vti_bin/lists.asmx
而不是服务器/_vti_bin/lists.asmx
。例如,您的网站位于地址server/site
,您应该使用server/site/_vti_bin/lists.asmx
,而不是server/_vti_bin/lists.asmx
。我的问题出在某些子网站上,所以你可以检查它是否与你相同。
答案 2 :(得分:0)
使用UpdateListItem创建新项目时,需要为列表的ID列包含Field标记。它应格式化为:
<Field Name='ID'>New</Field>
答案 3 :(得分:0)
标题仍然是列表中的必填列(默认情况下是这样)。如果是这样,请尝试将其添加到XML:
<Field Name='Title'></Field>
我不认为
<Field Name='ID'></Field>
执行NEW命令(插入新的列表项)时需要,但UPDATE命令(更新现有列表项)需要它 - 当我测试它时,我当然不需要它。