- PR -

VB.NET DataGrid内の検索について

投稿者投稿内容
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-03-13 16:15
TOGさん、ありがとうございます。
TOGさんの返信を見る前に自分なりの方法でやってみた結果、思い通りの動作になったので報告します。
TOGさんのやり方もこのあとに試してみようと思います。

まず、DataGridの抽出部分である
DataView1.RowFilter = "Num='" & TID & "'"
の部分なんですが、わざわざ抽出しなくても別の方法でデータを取得することを思いつきました。

このデータの取得方法では、一度取得したデータを抽出して空のインデックスに投げ込むことで、そのインデックスの「0」行にあたるものをテキストボックスに代入。といった処理だったのですが、そうしてしまうとDataViewの中には抽出した行しかないわけで・・・。当然、検索しても抽出した行以外は無いものと判断されます。
(このあたりのことに気づくのが遅かったみたいです^^;)

で、対処法としては
抽出部分を省き、取得するインデックスの値を0でなくて、その前に取得できている列の値にすることでうまくいきました。
===============================================================================

Select Case hti.Type
Case System.Windows.Forms.DataGrid.HitTestType.Cell

TID = myGrid.Item(hti.Row, 0)
myGrid.Select(hti.Row)

Case System.Windows.Forms.DataGrid.HitTestType.RowHeader
TID = myGrid.Item(hti.Row, 0)
End Select

If Not TID = "-1" Then
TextBox1.Text = DataView1(hti.Row)("Num")
End If

===============================================================================

この結果、DataViewにはDataGridをクリックしたあとも問題なくデータが残るために以前のような処理にはなりませんでした。
RowFilterの抽出の意味がはっきり理解できていないがために招いた失敗例でした。
べーちゃんさん、TOGさん、お世話になりました。
TOGさんの方法の結果は後ほどお伝えします。
Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2003-03-13 18:38
>TOGさんの方法の結果は後ほどお伝えします。

思いつきなのであまり気にしないでくださいね〜
上手く動くようになれば無事解決です。
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-03-13 19:36
遅くなりましたがTOGさんの教えてくださった結果でも同じような動きができました。
2つの違いを自分なりに検証してみました。

自分のやり方は抽出を使わずにやる。というやり方に対し、TOGさんのやりかたはあくまで抽出にこだわったやり方(で合ってるのかな・・・)ということでしょうか。

TOGさんの場合は空白を抽出することで、一度リセット状態に戻してる。ってことなんですかね?

何はともあれ、勉強になりました。
ありがとうございました。

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