2013-03-28 56 views
0

我有一個RadGridView,帶有可篩選列。我需要在列標題中添加一個複選框,用於檢查由某些過濾器(如果使用)導致的所有行。在具有可篩選列和行虛擬化的RadGridView標題列中選擇所有CheckBox ON

當選中標題列上的複選框時,我無法更新綁定集合中的值,因爲存在用戶可能會應用於某些列的過濾器。

所以,我試過如下:

var rows = EntityDataGridView.ChildrenOfType<GridViewRow>(); 

我然後依次通過行和更新其數據上下文。此解決方案可以正常工作,但在啓用行虛擬化時不起作用。它只更新屏幕上的可靠行。我們必須處理大量的數據,所以我們不能關閉行虛擬化。

我有一個解決方案,但我張貼這個來獲得更多的想法,以便如何以快速和更好的方式解決這個問題。

的解決方案,我有它,我傳遞到視圖模型中,RadGridView的過濾器描述,然後手動應用filtes到集合中的視圖模型,然後更新複選框狀態。但是有沒有更好的方法來處理這個問題?

+0

你能向我們展示'XAML'代碼嗎? – Haritha 2013-03-28 04:04:13

回答

0

大聲笑,這個問題的解決方案證明是相當平凡的,RadGridView上的「Items」屬性具有過濾項目而不是數據源中的項目。所以,我用那個來代替!

0

我不知道telerik如何實現過濾器。

但是,如果radgrid控件使用ICollctionView篩選集合,你可以創建你的收藏爲ICollctionView,並通過項目的篩選集合迭代。

var myCollectionView = CollectionViewSource.GetDefaultView(myDataSource); 

... 

foreach(var item in myCollectionView.OfType<TypeOfTheElement>()) 
{ 
    item.IsChecked = value; 
} 

請注意,這將是工作只有在ICollcetionViewViewModel是一樣的使用Telerik的radgrid控件

+0

也許上述解決方案的工作原理,但對我來說太多改變了,因爲View Model中的許多方法處理的是數據源的類型而不是CollectionViewSource。另外,我找到了解決這個問題的更簡單的解決方案無論如何,謝謝你的幫助。 – Shankar 2013-03-28 22:40:30

相關問題