如何在共享点设计器中插入查询值作为参数?

Posted

技术标签:

【中文标题】如何在共享点设计器中插入查询值作为参数?【英文标题】:How do you insert a query value as a parameter in sharepoint designer? 【发布时间】:2008-12-09 16:58:50 【问题描述】:

我正在尝试在 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 调用的known issue。显然,他们在提交之前对 's 进行了过度编码。给出的解决方法是在没有查询参数的情况下保存数据源,然后将其添加到页面并在 Common Data View Tasks 对话框中创建过滤器。我能够使用以下过滤器字符串使其工作:

[@ows_Title = 'Foo']

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

查看我的更新 - 显然这与问题很接近,但 SoapDataSources 会处理数据。还有其他想法吗? 抱歉,不,至少现在还没有。没有大量使用 SOAP 数据源。【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于如何在共享点设计器中插入查询值作为参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在带有参数的 s-s-rS 查询设计器中使用 IF ELSE 语句?

如何在VS2010 WPF设计器中控制自定义控件的默认属性

如何将数组作为 Laravel 查询生成器的 SELECT 参数传递

如何将 HTML 作为 PostgreSQL 插入查询中的值处理?

如何在表中插入变量(@id)作为 SQL 服务器查询中的自动增量?

如何在mysql中将单行插入查询重构为多行插入查询?