textBoxに書いた文字がdategrindviewに表示されたデータと一致した場合、dategrindview上にその内容が、選択または絞り込まれる機能を作りたいと思っています。
Private Sub Button_Click(sender As Object, e As EventArgs) Handles Button.Click DataGridView1.ClearSelection() Dim hasData As Boolean = False Dim resultIndex As Int32 = 0 For i As Integer = 0 To DataGridView1.RowCount - 1 Dim inputString1 As String = DataGridView1.Rows(i).Cells("0").Value Dim inputString2 As String = DataGridView1.Rows(i).Cells("1").Value Dim inputString3 As String = DataGridView1.Rows(i).Cells("2").Value Dim inputString4 As String = DataGridView1.Rows(i).Cells("3").Value If Textbox1.Text = inputString1 Then hasData = True resultIndex = i End If If Textbox2.Text = inputString2 Then hasData = True resultIndex = i End If If Textbox3.Text= inputString3 Then hasData = True resultIndex = i End If If Textbox4.Text = inputString4 Then hasData = True resultIndex = i End If If hasData = True Then DataGridView1.Rows(resultIndex).Selected = True Else MessageBox.Show("該当なし") End If Next
現状ではこのように記しているのですが、該当なしが正しい場合にも表示されたり、データがうまく絞り込みができません。よければ教えてくださいお願いします。
これではコードは見づらいです。質問を編集し、<code>ボタンで、出てきた’’’の枠の中にコードを貼り付けてください
すみません、編集しました!
うまくできないとはどのような状況になるのでしょうか?
具体的なデータ例などで説明できませんか?
YAmaGNZさん
textbox1が名前なのですが、一番初めの検索でaと検索した場合、きちんとデータが選択されますが、2回目に違う名前を入れると該当なしと表示されてから新しい名前が選択されるようになってしまいます。
また、そのほかの項目でも、一度該当なしとメッセージで表示されてから正しい値が選択されるという状況になってしまいます。
DataGridView を直接操作するのではなく、以下のような構成にして、
データソース ⇔ DataTable ⇔ BindingSource ⇔ DataGridView
DataTable を操作して絞り込む方がよさそうです。どうしますか?
すみません。VBNET初心者なもので・・
dategrindviewにはTextBoxで値を入力したものを計算し、算出してdategrindviewに記録するよう構成しているのですが、そのような場合でも可能ですか?可能であれば手順を教えていただきたいです。お願いします。
DataGridView と言うと以下の記事のように使うのが一般的だと思うのですが、質問者さんのケースでは違うのでしょうかね・・・
https://code.msdn.microsoft.com/10-ADONET-VB-1c64942f/
わざわざありがとうございます!今回の課題とは違ったんですが、勉強になりました。ありがとうございます。
回答2件
あなたの回答
tips
プレビュー