- - PR -
TextBoxで入力した内容のレコードをDataGridViewで選択したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 というプログラミングを書いたのですが、レコードが選択されません。 存在しない値を入力すると、該当するレコードはありませんと出るので検索はできていると思うのですが・・・ 何か解決法が分かる人がいれば教えてください。 |
|
投稿日時: 2008-05-29 12:31
やりたいことは、
http://www.atmarkit.co.jp/fdotnet/special/win20review02/win20review02_01.html のようなこと? |
|
投稿日時: 2008-05-29 12:54
>>かずくんさん
早い返答ありがとうございます。 ここら辺の基本的なコーティングはすでにできています。 あ、あとTextBoxというのはDataGridViewの中のテキストボックスではなくて、その外に配置してあるものです。 そこで入力した値をDataGridViewにあるか検索して、あったらそのレコードを選択するという作業をしたいのです。 |
|
投稿日時: 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 ] |
|
投稿日時: 2008-05-29 14:37
>>カドルドエグさん
ご返答ありがとうございます。 貼ってくださったソースを参考にしてプログラミングしたらできました! 今回はお忙しいところありがとうございました |
1