English 中文(简体)
如何在SharePoint Designer中将查询值作为参数插入?
原标题:
  • 时间:2008-12-09 16:58:50
  •  标签:

我正在尝试在SharePoint Designer中创建一个数据源,通过XML Web Services连接到SharePoint列表。我已经创建了数据源并连接到了相关列表。我可以使用GetListItems查看所有数据,并且我想使用查询参数过滤它。

查询参数需要一个XmlNode,当我将其作为值放入时,出现错误:

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

当然,我没有输入任何制表符或换行符,因为SharePoint Designer中只有一个单行输入字段。 我使用此查询时收到错误。

The server returned a non-specific error when trying to get data from the data source. Check the format and content of your query and try again. If the problem persists, contact the server administrator.

我只想过滤列表项结果集,以便只保留标题字段为“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放置数据源。

最佳回答

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

如果有修复补丁可用,我会通知你的。

如果有人想引用这个答案来回答一个新问题,我将接受那个回答。

问题回答

你是否对查询进行了XML编码?我认为你需要对像<、>和"这样的字符进行编码,以使其成为有效的XML,例如:

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

并且

&lt;FieldRef Name=&quot;Title&quot; /&gt;

这个链接展示了如何使用变量来解决类似的问题。

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

这可能无法修复您的错误。





相关问题
热门标签