如何:定义用于外部项选择器控件的筛选器

本主题演示如何通过使用 Microsoft SharePoint Designer 2010 为外部内容类型定义筛选器,在外部项选取器中优化搜索结果。

上次修改时间: 2010年6月25日

适用范围: SharePoint Server 2010

例如,假定您要搜索姓名为"Kim"的"Artist"。如图 1 的搜索结果中所示,该艺术家显然位于外部系统中。

图 1. 选择外部项

选择外部项

外部项选取器需要执行以下操作:

  • 有效显示 Kim

  • 同时显示不满足搜索条件的其他结果。

  • 返回下面不确定的错误消息:"无法满足搜索条件,因为没有为此外部内容类型定义筛选器。请与系统管理员联系。"

为什么外部项选取器返回了所有其他匹配项?如该错误消息所示,此示例中的问题是"Artist"外部内容类型没有定义筛选器。而当外部内容类型缺少筛选器时,默认行为是显示前 200 项,并且不对搜索结果进行筛选。在此示例中,同样在选取器中显示警告。

现在,在有数千个项要选取的方案中,您需要为外部内容类型定义一组合适的筛选器,以便最终用户可以找到正在搜索的项并快速缩小搜索范围。

出于以上所有原因考虑,建议您至少为外部内容类型定义一个筛选器。

幸运的是,您可以在 SharePoint Designer 2010 中轻松创建筛选器定义。您必须为对应于 BDC 元数据模型中的 Finder 方法的 Read List 操作定义筛选器。下面的部分介绍如何为外部内容类型添加筛选器。

为外部内容类型定义筛选器

在 SharePoint Designer 2010 中,使用"筛选器参数配置"对话框(如图 2 所示)为 Read List 操作配置筛选器。

图 2. 为"读取列表"操作定义筛选器

为读取列表操作定义筛选器

为外部内容类型定义筛选器

  1. 若要在 SharePoint Designer 2010 中打开"筛选器参数配置"对话框,请双击 Read List 操作,然后单击"下一步"。

  2. 单击"添加筛选器参数"。

  3. 若要配置外部项选取器,请单击"属性"面板上的"(单击以添加)"链接。图 3 显示打开的"筛选器配置"对话框。

    图 3. 配置新筛选器

    配置新筛选器

  4. 在"新建筛选器"字段中,键入筛选器名称。

  5. 选择要使用的筛选器字段。在此示例中,需要按艺术家名称筛选,因此选择"ArtistName"字段。

  6. 定义要使用的筛选器类型。有关筛选器类型及其工作方式的完整列表,请参阅 Business Data Connectivity Service 支持的筛选器的类型。两种常用的筛选器类型是"比较"和"通配符"。对于此示例,艺术家名称可以包含多个单词(如"Franz Kohl")。下面的列表指出使用每种筛选器类型时会出现的情况:

    • 比较  如果使用"相等"运算符,则需要用户键入艺术家全名才能找到相应项。因此,只有在用户键入"Franz Kohl"时此筛选器才适用,此筛选器不处理只键入"Franz"或"Kohl"的情况。

    • 通配符  如果使用通配符筛选器类型,则将带通配符的筛选器发送到外部系统。在这种情况下,如果用户键入"Franz"或"Kohl",此筛选器适用,并且返回字符串"Franz"或"Kohl"为其名称一部分的所有艺术家。

  7. 最后,确定筛选器值为 Null 时要执行的操作。如果您有一个外部列表与此外部内容类型相关联,则必须选择此选项。否则,当您浏览该列表时将看不到任何项,因为筛选器值将为 Null。

  8. 根据需要添加更多的筛选器参数,并添加 AND/OR 运算符行为。例如,可以按"姓氏 AND 区域"形式筛选。

    重要注释重要说明

    当专门与数据库集成时,Business Connectivity Services 将生成所需的查询以启用已设计的筛选器。如果使用其他类型的 Business Connectivity Services 数据源(如 Web 服务、Windows Communication Foundation (WCF) 服务或 .NET 程序集),必须确保您的筛选器属于其 API 的一部分,然后才能在 SharePoint Designer 中为这些筛选器建模。

    下面是为艺术家名称选择"通配符"类型的筛选器并搜索"Karen"时,选取器中的搜索结果的示例。

    图 4. 选择应用了筛选器的外部项

    使用应用的筛选器选择外部项

在外部内容类型上定义多个筛选器之后,外部项选取器将合并外部内容类型的每个 Read List 操作的每一筛选器生成的项。为了提高效率,建议您不要对每个外部内容类型使用太多的筛选器或 Finder,因为这可能会导致针对外部内容类型调用大量的操作,从而降低性能。