【VB.NET】DataGridViewにフィルタをかける方法

画面イメージ

コンボボックスの値変更時にフィルタを設定

VB
   Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

        '空の場合はフィルタ解除
        If ComboBox1.SelectedItem = "" Then
            dt.DefaultView.RowFilter = ""
            Return
        End If

        'コンボボックスの選択値でフィルタ
        dt.DefaultView.RowFilter = "TYPE = '" & ComboBox1.SelectedItem & "'"

    End Sub

動作確認用コード

VB
 Public dt As New DataTable
 
 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

     '列追加
     dt.Columns.Add("TYPE", GetType(String))
     dt.Columns.Add("NAME", GetType(String))

     'データ追加
     dt.Rows.Add("野菜", "かぼちゃ")
     dt.Rows.Add("野菜", "にんじん")
     dt.Rows.Add("果物", "ぶどう")
     dt.Rows.Add("果物", "さくらんぼ")

     'DataGridViewのデータソースに指定
     DataGridView1.DataSource = dt

     'DataGridView設定
     With DataGridView1
         .Columns("TYPE").Width = 150
         .Columns("NAME").Width = 100
         .ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
         .ColumnHeadersHeight = 40
         .AllowUserToAddRows = False
     End With

     'コンボボックス設定
     With ComboBox1
         .DropDownStyle = ComboBoxStyle.DropDownList
         .Items.Add("")
         .Items.Add("野菜")
         .Items.Add("果物")
     End With

 End Sub

コメント

タイトルとURLをコピーしました