DOBON.NETプログラミング掲示板過去ログ
DataGridViewで、バインドしたDTから抽出した行のみ表示させることはできますか
題名: DataGridViewで、バインドしたDTから抽出した行のみ表示させることはできますか
著者: バベル
日時: 2008/03/08 6:26:07
ID: 21609
この記事の返信元:
(なし)
この記事への返信:
[21610]
Re[1]: DataGridViewで、バインドしたDTから抽出した行のみ表示させることはできますか
ぽぴ王子
2008/03/08 6:51:34
ツリーを表示
環境/言語:[WindowsXP SP2 VB2005 EE]
分類:[.NET]
いつもお世話になっております。
DataGridViewに、メモリ上に作ったDataTableをバインドして表示しています。
(DataTableの内容はCSVファイルからロードしたものです。)
この状態ではDataTableのレコードは全件表示されていますが、
キーワードで抽出したレコードのみ動的に切り替えて表示させられるようにしたいです。
現在の知識で思いつく方法は、新しくDataTableを宣言し、
元のDataTableから検索抽出した行のみインポートし、
DataGriDviewのソースを切り替えて表示するという方法だけでした。
'------------------------------------------------
'レコードを検索抽出して配列に入れる
Dim foundRows() As DataRow = MainDT.Clone.Select("列名" & " Like '*" & キーワード & "*'")
'抽出結果を格納するDataTableを作る
Dim newDT as New DataTable
'メインのDataTableの構造を引き継ぐ
newDT = MainDT.Clone
'抽出したレコードを、新規DataTableにインポート
For Each row As DataRow In foundRows
newDT.ImportRow(row)
Next
'DataGridViewのソースを切り替える
DataGridView1.DataSource = newDT
'------------------------------------------------
現状でもよいのですが、
DataGridViewから行を編集したり削除したりする場合に、
毎回2つのDataTableを操作しなければならないことと、
検索するたびに、同じレコードを持つDataTableがたくさん作られていっては
非効率ですしリソースもたくさん使うのではないかと心配です。
縮小画像を入れるイメージ型の列もあるので大きくなりそうです。
(検索結果が用済みになるたびに、DTをDisposeすればいいのでしょうか?)
1つのDataTableから、表示させたい行のみを選んで
DataGridViewに表示させる方法がありましたらご教授頂きたく思います。
よろしくお願いいたします。
題名: Re[1]: DataGridViewで、バインドしたDTから抽出した行のみ表示させることはできますか
著者: ぽぴ王子
URL:
http://blogs.wankuma.com/popi/
日時: 2008/03/08 6:51:34
ID: 21610
この記事の返信元:
[21609]
DataGridViewで、バインドしたDTから抽出した行のみ表示させることはできますか
バベル
2008/03/08 6:26:07
この記事への返信:
[21612]
Re[2]: DataGridViewで、バインドしたDTから抽出した行のみ表示させることはできますか
バベル
2008/03/08 8:21:55
[解決]
ツリーを表示
[いきなり余談]
DT ってなんだろう、とかふと思ったりしました。DataTable のことかしら…と文脈で
判断してみましたが、個人的には DT と言われると「え?童貞?」とか思っちゃうような
人間なので、オレオレ用語は勘弁していただきたいかなと。
(エイトロン、と答える人もいるかもしれませんが)
[/いきなり余談]
さて本題ですが。
DataView について調べてみてください。
題名: Re[2]: DataGridViewで、バインドしたDTから抽出した行のみ表示させることはできますか
著者: バベル
日時: 2008/03/08 8:21:55
ID: 21612
この記事の返信元:
[21610]
Re[1]: DataGridViewで、バインドしたDTから抽出した行のみ表示させることはできますか
ぽぴ王子
2008/03/08 6:51:34
この記事への返信:
(なし)
ツリーを表示
■No21610に返信(ぽぴ王子さんの記事)
> [いきなり余談]
> DT ってなんだろう、とかふと思ったりしました。DataTable のことかしら…と文脈で
> 判断してみましたが、個人的には DT と言われると「え?童貞?」とか思っちゃうような
> 人間なので、オレオレ用語は勘弁していただきたいかなと。
> (エイトロン、と答える人もいるかもしれませんが)
> [/いきなり余談]
>
> さて本題ですが。
>
> DataView について調べてみてください。
すみません。
タイトルが長くなってしまい、なんとなく省略してしまいました。
DataViewクラスについて調べてみました。
便利なものがあるのだろうとは思っていたのですが、やはり!
恥ずかしながらDataGridViewに直接DataTableをバインドする方法しか知らなかったので、
DataViewのおかげでずいぶんコードが簡略化できそうです。
本当にどうもありがとうございました。
解決済み!
DOBON.NET
|
プログラミング道
|
プログラミング掲示板
分類:[.NET]
いつもお世話になっております。
DataGridViewに、メモリ上に作ったDataTableをバインドして表示しています。
(DataTableの内容はCSVファイルからロードしたものです。)
この状態ではDataTableのレコードは全件表示されていますが、
キーワードで抽出したレコードのみ動的に切り替えて表示させられるようにしたいです。
現在の知識で思いつく方法は、新しくDataTableを宣言し、
元のDataTableから検索抽出した行のみインポートし、
DataGriDviewのソースを切り替えて表示するという方法だけでした。
'------------------------------------------------
'レコードを検索抽出して配列に入れる
Dim foundRows() As DataRow = MainDT.Clone.Select("列名" & " Like '*" & キーワード & "*'")
'抽出結果を格納するDataTableを作る
Dim newDT as New DataTable
'メインのDataTableの構造を引き継ぐ
newDT = MainDT.Clone
'抽出したレコードを、新規DataTableにインポート
For Each row As DataRow In foundRows
newDT.ImportRow(row)
Next
'DataGridViewのソースを切り替える
DataGridView1.DataSource = newDT
'------------------------------------------------
現状でもよいのですが、
DataGridViewから行を編集したり削除したりする場合に、
毎回2つのDataTableを操作しなければならないことと、
検索するたびに、同じレコードを持つDataTableがたくさん作られていっては
非効率ですしリソースもたくさん使うのではないかと心配です。
縮小画像を入れるイメージ型の列もあるので大きくなりそうです。
(検索結果が用済みになるたびに、DTをDisposeすればいいのでしょうか?)
1つのDataTableから、表示させたい行のみを選んで
DataGridViewに表示させる方法がありましたらご教授頂きたく思います。
よろしくお願いいたします。