いつもお世話になっております。
DataGridViewに関して、選択されているレコードをDataRow型で別フォームに渡してから、各項目をテキストボックスに表示したいのですがうまくいきません(DataRow型にこだわっているわけではないのですが、レコード1件丸ごと取得する型を他に知らないので例として挙げました)。
DataGridViewのCurrentRowプロパティや、SelectedRows(0)をDataRow型に代入する試みをしましたが、型変換できませんでした。
DataGridViewで選択されているレコード一件まるごと変数に渡す方法というのはあるのでしょうか?
ちなみに、SelectionModeはSelectFullRowに、MultiSelectはFalseにしてあります。
ご存知の方ご教授いただけると助かります。
よろしくお願いします。
No.1
- 回答日時:
型を意識してみると幸せになれますよ
DataGridView.CurrentRow プロパティ
System.Windows.Forms.DataGridViewRow
DataGridView.SelectedRows プロパティ
System.Windows.Forms.DataGridViewSelectedRowCollection
↓(型を理解したら)
DataGridViewRow.DataBoundItem プロパティ
System.Object
行に値を読み込むデータ バインド オブジェクトを取得します。
以上により、下記のように記述することができます
※実際に使用できるかどうかまでは確認していません
[C#]
System.Windows.Forms.DataGridViewRow dgr = this.DataGridView1.CurrentRow;
System.Data.DataRow dr = (System.Data.DataRow)dgr.DataBoundItem
[VB2005]
Dim dgr As System.Windows.Forms.DataGridViewRow = Me.DataGridView1.CurrentRow
Dim dr As System.Data.DataRow = CType(dgr.DataBountItem, System.Data.DataRow)
ご回答いただきありがとうございました。
そうですね、暗黙の型変換に頼っている部分があり、どうにかなってくれという考え方は危険だなと改めて思いました。
おっしゃるとおりやってみたのですが、どうもやはり型変換ができませんでした。
参照しているのはDataTable型なわけですから、DataRowも取り出せそうな気はするのですが。。。
No.2
- 回答日時:
DataRowにこだわるのであれば、現在行のDataGridViewRowをまず取得して、その行の主キーの値で、DataTableのFindメソッドかSelectメソッドで検索すれば、現在行のDataRowが取り出せると思うので試してみてはどうですか。
同じ方法ではありませんが、currentrowのindexを取り出して、datagridviewのrows(index)でもdatarowを取得する事が出来ました!
おっしゃる方法も試してみたいと思います!
ありがとうございました!
No.3ベストアンサー
- 回答日時:
>おっしゃるとおりやってみたのですが、どうもやはり型変換ができませんでした。
>参照しているのはDataTable型なわけですから、DataRowも取り出せそうな気はするのですが。。。
えー・・・スイマセン
今度はコーディングして確認してみたところ、
なにやら、1ステップすっ飛ばしていました
下記の手順にて取得可能です
[C#]
System.Windows.Forms.DataGridViewRow dgr = this.DataGridView1.CurrentRow;
System.Data.DataRowView drv = (System.Data.DataRowView)dgr.DataBoundItem;
System.Data.DataRow dr = (System.Data.DataRow)drv.Row;
[VB2005]
Dim dgr As System.Windows.Forms.DataGridViewRow = Me.DataGridView1.CurrentRow
Dim drv As System.Data.DataRowView = CType(dgr.DataBoundItem, System.Data.DataRowView)
Dim dr As System.Data.DataRow = CType(drv.Row, System.Data.DataRow)
※最後のキャストを変更すれば、型付データセットにも対応可能のはずです
すばらしくご丁寧に相談に乗って頂き本当に感謝しています。
おっしゃる方法で無事DataRowを取得する事が出来ました!
無事解決しました。
型の意識も今後よりいっそうしてレベルアップし行きたいと思います!
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) 非表示にしたい行をグループ化して折り畳み 4 2022/09/17 20:17
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Excel(エクセル) EXCELピボットテーブル(複数アイテム) 1 2023/04/27 12:15
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
DataGridViewのデータの引渡しについて
Visual Basic(VBA)
-
-
4
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
5
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
6
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
7
C# DataTableの行をソートしてDataGridViewに反映させたい
C言語・C++・C#
-
8
VB.net
Visual Basic(VBA)
-
9
2つのDataTableをJoin
Visual Basic(VBA)
-
10
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
11
この行は既に別のテーブルに属しています
Visual Basic(VBA)
-
12
DataGridViewに空白がある場合はエラーにしたい
Visual Basic(VBA)
-
13
DataGridViewのセル編集完了後に値を設定するには
Visual Basic(VBA)
-
14
DataGridViewに複数テーブルのデータをセットしたい
Visual Basic(VBA)
-
15
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
16
【VB.NET】日付型の列にNULLを登録する方法について
SQL Server
-
17
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
18
コントロールを移動できない
Visual Basic(VBA)
-
19
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
20
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPのNULLレコード表示について...
-
ADO VBA 実行時エラー3021
-
DataGridViewの、選択されてい...
-
Line Inputで文字化け(助けて...
-
レコードセット(ADO.Recordset)...
-
DataGridViewの内容をDBに反映...
-
ヘッダレコードとトレーラレコ...
-
Access を×ボタンで閉じ...
-
VB.netの戻り値が返ってこない
-
アクセスでレポートの1印刷内...
-
Javaで使用するデータベースの...
-
ACCESSで大量の更新を行うと「...
-
サブレンジ分割されたNDB(富士...
-
ワードの差込印刷で教えて下さ...
-
Accessデータシートビューの行...
-
AccessVBAのMoveメソッドにつき...
-
Access でレコードセレクタが押...
-
ファイル書込みで一行もしくは...
-
Excel VBA読み込みで文字化けが
-
ACCESS VBA テーブルデータに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードが存在しなかった場合
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
-
アクセスでレポートの1印刷内...
-
カレントレコードが無い事を判...
-
差し込み印刷のレコード数について
-
レコードセット(ADO.Recordset)...
-
ワードの差込印刷で教えて下さ...
-
DataGridViewの内容をDBに反映...
-
Access でレコードセレクタが押...
-
DataGridViewの、選択されてい...
-
JSPのNULLレコード表示について...
-
ACCESSで大量の更新を行うと「...
-
[VBA] ADOの Clone と AddNew
-
Access を×ボタンで閉じ...
-
サブレンジ分割されたNDB(富士...
-
ヘッダレコードとトレーラレコ...
-
データセットのレコード更新が...
-
DataGridViewにてセル以外をク...
-
Line Inputで文字化け(助けて...
おすすめ情報