- PR -

TextBoxで入力した内容のレコードをDataGridViewで選択したい

1
投稿者投稿内容
REN
会議室デビュー日: 2008/05/29
投稿数: 7
投稿日時: 2008-05-29 11:27
初投稿です。最近VB.NETをはじめた初心者ですが、以後よろしくお願い致します。


件名の通り、TextBoxで入力した内容のレコードをDataGridViewで選択しようとしているのですが、どうもうまくいきません


Dim i As Integer
Dim flg As Boolean

For i = 0 To データセット名.テーブル名.Count - 1

If データセット名.テーブル名.Rows(i)("列名") = TextBox1.Text Then
flg = True
Exit For
End If

Next i

If flg = True Then
Me.DataGridView1.BindingContext _
(データセット名, "列名").Position = i
Else
MessageBox.Show("該当するレコードはありません")
End If

というプログラミングを書いたのですが、レコードが選択されません。
存在しない値を入力すると、該当するレコードはありませんと出るので検索はできていると思うのですが・・・

何か解決法が分かる人がいれば教えてください。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2008-05-29 12:31
やりたいことは、

http://www.atmarkit.co.jp/fdotnet/special/win20review02/win20review02_01.html

のようなこと?
REN
会議室デビュー日: 2008/05/29
投稿数: 7
投稿日時: 2008-05-29 12:54
>>かずくんさん
早い返答ありがとうございます。

ここら辺の基本的なコーティングはすでにできています。

あ、あとTextBoxというのはDataGridViewの中のテキストボックスではなくて、その外に配置してあるものです。


そこで入力した値をDataGridViewにあるか検索して、あったらそのレコードを選択するという作業をしたいのです。
カドルドエグ
常連さん
会議室デビュー日: 2008/05/29
投稿数: 25
投稿日時: 2008-05-29 14:00
はじめまして。カドルドエグと申します。
サンプルを拝見するに、肝心のDataGridViewを選択状態にさせる「Selected」プロパティについての処理が書かれてないようですが…。

ついでに、私がVS2005のWindowsアプリ(Win XPの.NET Framework2.0)で試して動いたコードを置いておきます。
※元々C#使いなので表現がおかしいところがありますがご了承を…。。因みにForm1.vbをそのままコピペしました

検索のタイミングについて何もかかれてなかったので、仮定としてButtonを配置しました。
もし、TextBoxに入力してフォーカスを外したタイミングですぐに検索させる場合は、
処理をほぼそのままLeaveイベントかなんかに移してしまえばよいと思います。

また、デザイナでのDataGridViewの事前設定として、MultiSelectをFalseに、
表示上の都合でSelectionModeをFullRowSelectにしています。

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'DataGridViewの元となるデータを設定
Dim table As DataTable = New DataTable()
table.Columns.Add("C1", GetType(String))
table.Columns.Add("C2", GetType(String))
table.Columns.Add("C3", GetType(String))

table.Rows.Add("aaa", "あああ", "123")
table.Rows.Add("bbb", "いいい", "456")
table.Rows.Add("ccc", "ううう", "789")
table.Rows.Add("ddd", "えええ", "012")
table.Rows.Add("eee", "おおお", "345")
table.Rows.Add("fff", "かかか", "678")

DataGridView1.DataSource = table
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hasData As Boolean = False
Dim resultIndex As Int32 = 0
For i As Integer = 0 To DataGridView1.RowCount - 1
Dim inputString As String = DataGridView1.Rows(i).Cells("C1").Value '今回は検索対象を列「C1」とする
If TextBox1.Text = inputString Then
hasData = True
resultIndex = i
End If
Next


If hasData Then
DataGridView1.Rows(resultIndex).Selected = True
Else
MessageBox.Show("候補なし")
End If

End Sub
End Class


[ メッセージ編集済み 編集者: カドルドエグ 編集日時 2008-05-29 14:14 ]
REN
会議室デビュー日: 2008/05/29
投稿数: 7
投稿日時: 2008-05-29 14:37
>>カドルドエグさん

ご返答ありがとうございます。

貼ってくださったソースを参考にしてプログラミングしたらできました!


今回はお忙しいところありがとうございました
1

スキルアップ/キャリアアップ(JOB@IT)