我有一个Silverlight PivotViewer启动并运行,大约有4000个项目。
我将查询字符串参数传递给托管PivotViewer的页面,以便在打开时过滤项目。
如何以编程方式向PivotViewer添加筛选器?
我试过了:
pvtTest.AppliedFilters.Add(new KeyValuePair<string, IList<string>>("Color", new List<string> { "EQ.Green", "EQ.Red" }));但是它仍然会显示所有的项目。在使用UI设置一些过滤器之后,我还尝试检查AppliedFilters属性的值是什么,但它仍然只包含我在上面添加的过滤器。
发布于 2011-09-19 18:26:02
可以使用ViewerState属性指定筛选器。
它有一个非常特殊的语法,可以在here中找到。
发布于 2012-11-30 00:36:23
对于PivotViewer-2
string sFilter = pvViewer.Filter; //get existing filter
pvViewer.ItemsSource = new-data-source; //assign new data source
pvViewer.Filter = sFilter; //reassign filter发布于 2012-09-19 21:24:12
我认为grimstoner的答案可能不够清楚。
您确实可以使用ViewerState属性来设置筛选器,但不能直接设置它,因为它只有一个公共的getter。解决方法是使用LoadCollection()方法传递已加载集合的URI和修改后的查看器状态。您可能希望透视查看器重新加载集合,但事实并非如此。它似乎足够智能,可以检测到相同的URI,并且只应用新的查看器状态。
示例:
string viewerState = pivotViewer.ViewerState;
// Modify the viewer state according to the rules defined at:
// http://www.silverlight.net/content/pivotviewer/developer-info/api/html/P_System_Windows_Pivot_PivotViewer_ViewerState.htm
pivotViewer.LoadCollection(pivotViewer.CollectionUri.ToString(), viewerState);我希望这能帮助其他人解决同样的问题。
https://stackoverflow.com/questions/7357932
复制相似问题