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

SharePoint 2010,将querystring传递到外部列表XsltListView禁用内置筛选器,sharepoint,sharepoint-2010,bcs,Sharepoint,Sharepoint 2010,Bcs,我有一个外部列表(VisualStudio使用Linq to SQL创建了BCS模型),在ReadList方法上有一个过滤器。外部列表和筛选工作 我希望能够通过listview页面上的QueryString动态设置过滤器。使用SharePoint Designer,我编辑listview并向XsltListView添加QueryString参数,并使用该参数配置Finder方法(类似于: ) 现在,我可以通过QueryString传入过滤器-这是有效的,列表现在根据过滤器显示项目。 但是这个解决

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

我希望能够通过listview页面上的QueryString动态设置过滤器。使用SharePoint Designer,我编辑listview并向XsltListView添加QueryString参数,并使用该参数配置Finder方法(类似于: )

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

是否可以将QueryString变量传递给XsltListView中Finder方法上的筛选器和保留按列标题进行筛选的内置功能结合起来


非常感谢您的任何想法。

我确实找到了解决方案。列过滤器功能似乎在不解析标记的情况下添加了标记。因此,如果您有一个定义为“{filtername}”的筛选器,那么这个令牌字符串将作为筛选器值(包括大括号)发送给BCS。 因此,您必须通过签入BCS代码(并在筛选器通过=“{filtername}”)时包含所有项)对此采取措施,或者如果是SQL,只需添加类似这样的额外子句(最后一个或与默认生成的SQL相比添加): 其中(@filtername为NULL)或(@filtername为NULL且[]为NULL)或[]类似于@CprNr)或(@CprNr类似于“{filtername}%”)