2011-09-09 27 views
2

我有一個Silverlight PivotViewer啓動並運行,約有4000個項目。以編程方式設置PivotViewer的過濾器

我將querystring參數傳遞給託管PivotViewer的頁面,以在打開時過濾項目。

如何以編程方式向PivotViewer添加過濾器?

我已經試過:

pvtTest.AppliedFilters.Add(new KeyValuePair<string, IList<string>>("Color", new List<string> { "EQ.Green", "EQ.Red" })); 

,但它仍然顯示的所有項目。我也試着在使用UI設置一些過濾器後檢查AppliedFilters屬性的值是什麼,但它仍然只包含我在上面添加的過濾器。

+0

發現它...您可以通過使用ViewerState屬性指定過濾器。它有一個特定的語法,可以在這裏看到:http://www.silverlight.net/content/pivotviewer/developer-info/api/html/P_System_Windows_Pivot_PivotViewer_ViewerState.htm – grimstoner

回答

1

您可以使用ViewerState屬性指定過濾器。

它有一個非常具體的語法,可以找到here

1

我覺得grimstoner的答案可能不夠清楚。

確實可以使用ViewerState屬性設置過濾器,但不能直接設置它,因爲它只有一個公共getter。解決方法是使用LoadCollection()方法傳遞已加載集合的URI和修改後的查看器狀態。您可能期望Pivot Viewer將重新加載集合,但事實並非如此。它足夠聰明地檢測到相同的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); 

我希望這可以幫助其他有同樣問題。

+0

請注意,這不適用於最新版本的數據透視查看器。沒有'LoadCollection'方法:http://msdn.microsoft.com/en-us/library/system.windows.controls.pivot.pivotviewer(v=vs.95).aspx – McGarnagle

2

對於PivotViewer-2

string sFilter = pvViewer.Filter; //get existing filter 

pvViewer.ItemsSource = new-data-source; //assign new data source 

pvViewer.Filter = sFilter; //reassign filter 
+0

垃圾,這個作品 - 謝謝。我基本上花了整整一天的時間來解決這個問題,並基本放棄了。 – McGarnagle

相關問題