0

我正在尝试在 SharePoint Designer 中创建一个通过 XML Web 服务连接到 SharePoint 列表的数据源。我已经创建了数据源并连接到有问题的列表。我可以使用 GetListItems 查看所有数据,并且我想使用查询参数对其进行过滤。

查询参数需要一个 XmlNode,当我把它作为值时,我得到一个错误:

<Query>
    <Where>
        <Eq>
            <FieldRef Name="Title" />
            <Value Type="Text">Foo</Value>
        </Eq>
    </Where>
</Query>

当然,我没有输入任何选项卡或换行符,因为我在 SharePoint Designer 中只有一个输入字段。我收到此查询的错误:

尝试从数据源获取数据时,服务器返回了一个非特定错误。检查查询的格式和内容,然后重试。如果问题仍然存在,请联系服务器管理员。

我只是想将列表项结果集过滤为标题字段为“Foo”的列表项。这可以在 SharePoint Designer 中完成吗?


更新:以这种方式转义 < 和 > 也会失败:

&lt;Query&gt;&lt;Where&gt;&lt;Eq&gt;&lt;FieldRef Name=&quot;Title&quot; /&gt;&lt;Value Type=&quot;Text&quot;&gt;Foo&lt;/Value&gt;&lt;/Eq&gt;&lt;/Where&gt;&lt;/Query&gt;

更新:这似乎是SoapDataSource 组件和 SOAP 调用的一个已知问题。显然,他们在提交之前对 <'s 和 >'s 进行了过度编码。给出的解决方法是在没有查询参数的情况下保存数据源,然后将其添加到页面并在 Common Data View Tasks 对话框中创建过滤器。我能够使用以下过滤器字符串使其工作:

[@ows_Title = 'Foo']

不幸的是,这对我没有多大帮助,因为我正在添加一个数据视图(显示数据)而不是一个数据源,我可以使用它来将其他控件指向(如下拉列表)。

我仍在寻找一个好的解决方案,让我可以使用 SharePoint Designer 放置数据源。

4

4 回答 4

2

SharePoint Designer 中存在错误。您不能像这样将 Query 对象传递给 SOAPDataSource - XML 被过度编码。除了使用 Visual Studio 之外,您无法修复它。

如果有可用的修补程序,我会通知您。

如果有人想在新答案中引用此答案,我会接受该答案。

于 2008-12-22T19:18:24.303 回答
1

您是否对查询进行了 XML 编码?我相信您需要对 <、> 和 " 等字符进行编码,使其成为有效的 XML,例如:

&lt;Query&gt;&lt;Where&gt;

&lt;FieldRef Name=&quot;Title&quot; /&gt;
于 2008-12-09T20:00:41.620 回答
1

显示了如何使用变量来解决类似的问题。

于 2011-10-26T05:27:15.287 回答
0

使用列表标题字段后,除非我使用“包含”,否则它不会为我返回值。

但是,这可能无法解决您的错误。

于 2008-12-09T21:18:10.077 回答