如何过滤过滤的 DataGridView [VB 2010 Express / MS Access]
Posted
技术标签:
【中文标题】如何过滤过滤的 DataGridView [VB 2010 Express / MS Access]【英文标题】:How do I filter a filtered DataGridView [VB 2010 Express / MS Access] 【发布时间】:2015-02-22 17:16:50 【问题描述】:那么如何过滤已经过滤的DataGridView呢?
我有一个名为“tbl_att”的表,其中包含以下列:id_num、att_date、status。
在我的表单中,有一个文本框 (txt_studnum) 用于过滤学号 (id_num)。代码是:
Private Sub viewatt_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
provider2 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
dataFile2 = "C:\DATABASE\rams.accdb"
connString2 = provider2 & dataFile2
myConnection2.ConnectionString = connString2
da = New OleDbDataAdapter("Select [IDNum], [att_date], [status] from tbl_att", myConnection2)
da.Fill(ds, "tbl_att")
Dim view1 As New DataView(tables(0))
source1.DataSource = view1
DataGridView1.DataSource = view1
DataGridView1.Refresh()
End Sub
而执行事件是通过点击一个按钮:
Private Sub btn_search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_search.Click
source1.Filter = "[IDnum] = '" & txt_idnumber.Text & "' "
End Sub
发生的情况是,用户将输入 ID 号,单击按钮,DataGridView (DataGridView1) 将显示过滤结果。
我想要做的是使用将过滤“状态”的组合框过滤 DGV1 中已过滤的数据。该组合框将包含“Present”、“Absent”和“Late”作为项目,对应于“status”列中的数据。
我尝试使用以下方法制作另一个用于过滤状态的按钮:
source1.Filter = "[status] = '" & cmb_status.Text & "' "
但 DGV 显示所有出席、缺席或迟到,无论 ID 号如何。希望任何人都可以帮助我。我也为糟糕的英语道歉。谢谢!
【问题讨论】:
显然 - 您需要组合数据视图的过滤器,例如filter = "[status] = '0' AND [IDnum] = '1' "
然后您使用 source1.Filter = string.Format(filter,...
顺便说一句,您的 IDnum
是字符串吗?
那么,您不认为上面的解决方案是解决方案吗? string.format
比无休止的串联要干净得多。
【参考方案1】:
第二个过滤器使用:
source1.Filter = "[IDnum] = '" & txt_idnumber.Text & "' AND [status] = '" & cmb_status.Text & "' "
【讨论】:
以上是关于如何过滤过滤的 DataGridView [VB 2010 Express / MS Access]的主要内容,如果未能解决你的问题,请参考以下文章