vb.net DatagridView对已修改数据源的过滤

时间:2016-09-02 09:09:16

标签: vb.net datagridview filter

我有一个DatagridView(DatagridView1),我从数据库填充:

Me.DatagridView1.DataSource = DataTable1

然后我将2列(Icon& Status)添加到我的dataGridView,其中一个带有图标,另一个带有描述,具体取决于从DataTable1检索的值(通常是错误,警告等)

然后我有一个下拉列表(DropDown1),其中包含值'全部'错误'错误'警告'等

我想基于DropDown1中的选定值过滤我的DataGridView。 例如如果'错误'选中我只会显示“'错误'在“状态”列中。 我使用以下代码:

Private Sub DropDown1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDown1.SelectedIndexChanged
    Dim dt As New DataTable()

    dt = TryCast(DatagridView1.DataSource, DataTable)
    If dt IsNot Nothing Then
        dt.DefaultView.RowFilter = String.Format("Status Like '*" & Trim(Me.DropDown1.Text.ToString) & "*'")
    End If
End Sub

现在我有两个问题:

  1. 我有一个错误,说他不识别列状态(这是正常的,因为在调试时,我看到DataGridView1.DataSource只包含数据库中的原始数据而不是我添加的列) - 如何检索我的所有专栏?
  2. 如何删除所有过滤器(选择全部时)?

2 个答案:

答案 0 :(得分:1)

我认为这应该清除你的过滤器

dt.DefaultView.RowFilter = ""

要检索列,您必须从DataGridView本身访问它们

DatagridView1.Rows(x).Cells(y).value

答案 1 :(得分:0)

好的,我有解决方案。 首先要感谢theBurger dt.DefaultView.RowFilter =""确实清除过滤器。

关于数据源问题是我将列直接添加到网格中,而不是将它们添加到我的数据表中,然后刷新数据网格。