SharePoint 2010,将querystring传递到外部列表XsltListView将禁用内置筛选器



我有一个外部列表(Visual Studio使用Linq to SQL创建了BCS模型),其中包含ReadList方法上的筛选器。外部列表和筛选工作。

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

我现在可以通过QueryString传入过滤器了——这很有效,列表现在根据过滤器显示项目。但这个解决方案的副作用是,每个列标题上的内置过滤器不再工作——我收到一个"this column type cannot be filtered"错误。一旦我删除Finder方法上的过滤器,内置的过滤器就会重新开始工作。

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

任何想法都将不胜感激。

我实际上找到了一个解决方案。列筛选器功能似乎添加了令牌而没有对其进行解析。因此,如果您有一个定义为"{filtername}"的筛选器,则此令牌字符串将作为筛选器值(包括大括号)发送到BCS。因此,您必须通过签入BCS代码来对此采取行动(并在筛选器passed="{filtername}"时包括所有项),或者在SQL的情况下,只需添加这样的额外子句(与默认生成的SQL相比,最后添加的or):WHERE((@filtername为NULL)OR(@filtrname为NULL AND[]为NULL)OR[]LIKE@CprNr)OR(@CprNr LIKE'%{filtername}%')

相关内容

  • 没有找到相关文章

最新更新