SharePoint 2010,将查询字符串传递给外部列表XsltListView禁用内置过滤器

时间:2013-08-29 11:09:14

标签: sharepoint sharepoint-2010 bcs

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

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

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

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

非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

我实际上找到了解决方法。似乎列过滤器功能添加了令牌而不解析它。因此,如果您将过滤器定义为“{filtername}”,则此标记字符串将逐字地作为过滤器值发送到BCS,包括花括号。 因此,您必须通过检入BCS代码(并在过滤器传递时包含所有项目=“{filtername}”)来执行此操作,或者在SQL的情况下,只需添加此类附加子句(最后一个OR添加与默认生成相比) SQL): WHERE((@ filtername IS NULL)或((@filtername IS NULL AND [] IS NULL)或[] LIKE @CprNr)OR(@CprNr LIKE'%{filtername}%'))