我正在尝试在SharePoint Designer中创建一个通过XML Web Services连接到SharePoint列表的数据源。我创建了数据源并连接到相关列表。我可以使用GetListItems查看所有数据,我想使用查询参数对其进行过滤。
查询参数采用XmlNode,当我把它作为值时,我得到一个错误:
<Query>
<Where>
<Eq>
<FieldRef Name="Title" />
<Value Type="Text">Foo</Value>
</Eq>
</Where>
</Query>
当然,我没有输入任何标签或换行符,因为我在SharePoint Designer中只有一行输入字段。我收到此查询的错误:
服务器返回非特定的 尝试从中获取数据时出错 数据源。检查格式和 您的查询内容,然后重试。 如果问题仍然存在,请联系 服务器管理员。
我只想将列表项结果集过滤为标题字段为“Foo”的结果集。可以在SharePoint Designer中完成吗?
更新:转义&lt;和&gt;以这种方式也失败了:
<Query><Where><Eq><FieldRef Name="Title" /><Value Type="Text">Foo</Value></Eq></Where></Query>
更新:这似乎是带有SoapDataSource组件和SOAP调用的known issue。显然,他们在提交之前对&lt; s和&gt;进行了过度编码。给出的解决方法是在没有查询参数的情况下保存数据源,然后将其添加到页面并在“公共数据视图任务”对话框中创建过滤器。我能够使用以下过滤字符串使其工作:
[@ows_Title = 'Foo']
不幸的是,这对我没有多大帮助,因为我正在添加数据视图(显示数据),而不是我可以用来指向其他控件的数据源(如下拉列表)。
我仍在寻找一个很好的解决方案,让我可以使用SharePoint Designer放置数据源。
答案 0 :(得分:2)
SharePoint Designer中存在错误。你不能像这样将Query对象传递给SOAPDataSource - XML得到了过多的编码。除了使用Visual Studio之外,您无法修复它。
如果有可用的修补程序,我会告诉您。
如果有人想在新答案中引用这个答案,我会接受这个答案。
答案 1 :(得分:1)
您是否对查询进行了XML编码?我相信你需要编码像 和<Query><Where>
<FieldRef Name="Title" />
答案 2 :(得分:1)
This显示了变量如何用于解决类似问题。
答案 3 :(得分:0)
使用列表标题字段后,除非我使用“包含”,否则它不会为我返回值。
但这可能无法解决您的错误。