【问题标题】:Use UpdateListItems webbservice on Sharepoint using Infopath form without managed code在没有托管代码的情况下使用 Infopath 表单在 Sharepoint 上使用 UpdateListItems webbservice
【发布时间】:2013-11-21 12:48:23
【问题描述】:

我需要创建一个 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 的列值。

我添加了一个按钮,该按钮触发使用数据连接和“UpdateListItems”方法的操作规则。该按钮还被测试触发其他规则操作,因此该按钮本身可以工作。

当我尝试将新项目发布到共享点列表时,我没有收到任何错误消息,一切似乎都工作正常,但没有创建任何项目。

如果我更改任何内容,例如 GUID 或其他内容,我会收到不同的错误消息,因此它显示为 Infopath 认为一切正常,但 Sharepoint 没有对我的列表执行任何操作。未创建任何项目。

有人知道是什么地方出了问题吗?

编辑:我使用了来自同一个 Sharepoint-server 的其他 web 服务,没有任何问题。

【问题讨论】:

    标签: web-services sharepoint infopath caml sharepoint-list


    【解决方案1】:

    这个建议可能有点过时了,但是...

    我刚刚遇到了类似的问题。通过在 SharePoint 服务器上使用 ULSViewer 并阅读 MSDN 文档,我发现 CAML 字段标记中的 Name 属性应该是 Sharepoint 在创建列表列时为其分配的内部名称。就我而言,我必须将 CAML 从以下位置更改:

    <Field Name="pub1"> 
    
    to 
    
    <Field Name="_x0066_ub1">
    

    【讨论】:

    • 对不起,现在是 2017 年,我还在尝试学习 InfoPath...我和你有类似的问题。我可以添加新记录,但所有字段都是空白的。我不确定哪一部分是错的。正确的 XML 模式应该是什么样子?
    • 我修好了。提交按钮具有“关闭此表单”的操作。该操作将在后面的任何代码之前运行。因此没有添加新记录!
    【解决方案2】:

    我遇到了同样的问题 - 您必须将 Web 服务提交指向站点 /_vti_bin/lists.asmx 而不是服务器 /_vti_bin/lists.asmx。例如,您的站点位于地址server/site,您应该使用server/site/_vti_bin/lists.asmx,而不是server/_vti_bin/lists.asmx。我的问题出在一些子网站上,所以你可以检查一下,如果它对你来说是一样的。

    【讨论】:

      【解决方案3】:

      使用 UpdateListItem 创建新项目时,您需要为列表的 ID 列包含一个 Field 标记。它的格式应该是这样的:

      <Field Name='ID'>New</Field>
      

      【讨论】:

      • 由于您没有收到错误消息,您可能会尝试在Wireshark 之类的工具运行时运行代码。您将能够看到网络流量,并可能更好地了解问题所在。
      【解决方案4】:

      标题是否仍然是列表中的必填列(默认情况下)。如果是这样,请尝试将其添加到您的 XML:

      <Field Name='Title'></Field>
      

      我不这么认为

      <Field Name='ID'></Field>
      

      在执行 NEW 命令(插入新列表项)时是必需的,但对于 UPDATE 命令(更新现有列表项)是必需的 - 我在测试时当然不需要它。

      【讨论】:

      • 尝试了使用和不使用“标题”和“ID”字段以及所有组合,但现在仍然得到相同的结果。我也尝试从 '' 中删除 ID="1",但没有成功。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      相关资源
      最近更新 更多