検索ボックスを使用した検索
今回は、下図のように検索ボックスを使用した検索をします。
ある程度望む検索処理が複雑になると、このように検索ボックスを使用した方が使い勝手が良いです。
|
⇒ |
|
事前準備
- テストデータを準備(今回はAccessファイルにしました)
サンプルデータはここで⇒https://everyday-growth.com/name/rand.php
- フォームを準備します。
- Corp_list…データ表示用の「Windowsフォーム」
⇒ToolStripを設定しておく
⇒DataGridViewの色を変えたいので「EnableHeadersVisualStyles = False」にする。
- Find_Corp…検索用の「ダイアログ」
コード
- 親(Corp_list)のフォームのコードを書きます
'ToolStripMenuItemである「検索」の動作
'親を自分であることを指定した上でダイアログを表示
Private Sub 検索ToolStripMenuItem_Click() Handles TSMI_検索.Click
Find_Corp.Owner = Me
Find_Corp.ShowDialog()
End Sub
'子(ダイアログ)から入力値を取得して検索実行
Sub find_Datasource()
Dim FilterStrings
'子(ダイアログ)から入力値を取得
FilterStrings = "会社名 LIKE '" & Find_Corp.Text_Corp_Name.Text & "%'"
'フィルタ実行
ds.Tables("CORP").DefaultView.RowFilter = FilterStrings
End Sub
- 子(Find_Corp)のフォームのコードを書きます
'OKボタンの処理
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
'親画面のプロシージャを実行
Corp_list.find_Datasource()
'親画面のRowHeaderとGridの色を変更。
'フィルタが有効中であることを使用者に視覚的にわかってもらうため。
'※事前準備で「EnableHeadersVisualStyles=False」にしておく必要がある。
'わざわざここで変える必要もないが、ここでも出来るよ…というサンプル
DirectCast(Me.Owner, Corp_list).DataGridView1.RowHeadersDefaultCellStyle.BackColor = Color.Blue
DirectCast(Me.Owner, Corp_list).DataGridView1.GridColor = Color.Red
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub
おまけ
- 子(Find_Corp)のフォームにコンボボックスを置いて、リストを動的に設定する場合
'テーブル内でソートが出来ないので、一度ビューにしてテーブルにする際にソートする
Dim testDV As DataView = ds.Tables("CORP").DefaultView
Dim testDT As DataTable = testDV.ToTable("CORP", True, "会社名")
Find_Corp.ComboBox1.DataSource = testDV
Find_Corp.ComboBox1.DisplayMember = "会社名"
End Sub
<<メモ>>