0

我有一个外部列表(Visual Studio 使用 Linq to SQL 创建的 BCS 模型),并在 ReadList 方法上有一个过滤器。外部列表和过滤器工作。

我希望能够通过 listview 页面上的 QueryString 动态设置过滤器。使用 SharePoint Designer,我编辑列表视图并将 QueryString 参数添加到 XsltListView 并使用参数配置 Finder 方法(类似于 ie: http ://arsalkhatri.wordpress.com/2012/01/07/external-list-with- bcs-search-filters-finders/)。

我现在可以通过 QueryString 传入过滤器 - 这有效,列表现在根据过滤器显示项目。但是此解决方案的副作用是每个列标题上的内置过滤器不再起作用 - 我收到“无法过滤此列类型”错误。一旦我删除了 Finder 方法上的过滤器,内置过滤器就会再次开始工作。

是否可以将 QueryString 变量传递给 XsltListView 中 Finder 方法上的过滤器,并保留内置功能以按列标题进行过滤?

任何想法都非常感谢。

4

1 回答 1

0

我实际上找到了解决方案。似乎列过滤器功能添加了令牌而不解析它。因此,如果您将过滤器定义为“{filtername}”,则此标记字符串将作为过滤器值发送到 BCS,包括大括号。因此,您必须通过检查您的 BCS 代码(并在过滤器通过 = "{filtername}" 时包括所有项目)来对此采取措施,或者在 SQL 的情况下只需添加这样的额外子句(最后添加的 OR 与默认生成的相比SQL): WHERE ((@filtername IS NULL) OR ((@filtername IS NULL AND [] IS NULL) OR [] LIKE @CprNr) OR (@CprNr LIKE '%{filtername}%') )

于 2013-09-02T07:58:56.933 回答