2011-05-09 53 views
1

我的代碼是這樣濾波在C#綁定源

BindingSource bs=new BindingSource(); 
List<Items> lstItems= ListItems(); 

bs.DataSource=lstItems; 

我結合這bindingsouce到一個gridview。

grd.DaataSource=bs; 

然後我這種原始的BindingSource複製到單獨的BindngSource

BindingSource filterBs=new BindingSource(); 

然後,我使用的過濾條件到的BindingSource

filterBs.Filter= "ItemCode='1' and cost>'200'"; 

grd.DataSource=null; 

重新網格的datasouce結合過濾的BindingSource 。

grd.DataSource=filterBs; 

但現在它也顯示網格中的所有記錄。

回答

2

然後我這個原來 的BindingSource複製到一個單獨的 BindngSource

BindingSource filterBs=new BindingSource(); 

你不是複製它,你要創建一個新的BindingSource。

要複製它,你反而會做類似如下:

BindingSource filterBs = grd.DataSource; 
+0

或者乾脆 - > BindingSoure filterBs = BS;對? – 2011-05-09 11:59:19

+0

即便如此,您仍在將引用複製到舊的BindingSource,而不是創建一個看起來像舊的引用。 – 2013-08-30 13:31:29

2

綁定源依賴於基礎數據源來提供過濾和排序功能。 List<>不支持篩選,因此您的BindingSource不支持篩選。您可以通過在bs.DataSource=lstItems;分配後立即在調試器中查看bs.SupportsFiltering值來確認是否存在此問題。

BindingSource.SupportsFiltering Property

如果列表不是IBindingListView,SupportsFiltering始終返回false。

我所知道的是,只有類實現IBindingListViewDataView