2013-10-04 129 views
0

我过滤了我的BindingSource,并且可以注意到绑定的gridview控件的结果很好,但是当我手动迭代时,我没有得到预期的结果。下面是代码:BindingSource筛选器和查询

CollectorAlertsBindingSource.Filter = "CollectorAlert_Name='" & nameCA & "'" 
    Me.CollectorAlertsTableAdapter.Fill(Me.PWDS.CollectorAlerts) 

    Dim CARows As DataRow 

    For Each CARows In PWDS.CollectorAlerts.Rows 
     txtCollectorAlertName.Text = CARows("CollectorAlert_Name").ToString 
     txtTimedInterval.Text = CARows("CollectorAlert_TriggerInterval").ToString 
    Next 

我可以告诉我时通过该ROWS.Count = 3共有的表中的3行是码的步骤,但所述过滤器应过滤它下降到1我确信我正在看这个完全错误的,所以我需要一些帮助。

我在做什么错?

谢谢!

回答

0

你过滤了BindingSource,但是你没有使用它 - 你直接从数据表中拉行。当你应用一个过滤器时,bs实际上是通过它自己的DataView进行过滤的(这是一个位于数据表顶部的层,你可以在调试器中看到它是bs的'syncroot'属性)。表本身仍然具有其中的所有行。

+0

我没有看到任何.DefaultView :(不在CollectorAlerts Datatable上。当我尝试获得错误:'rows'不是System.Data.Dataview的成员 –

+0

我试着迭代DefaultView使用DataRowView也是如此,但是生成了相同的结果 –

+0

当我打破并查看DefaultView.Count时,我得到3 :)我应该在那里添加一个rowfilter吗?或者是更好的方法? –