
いつもお世話になっております。
DataGridViewに関して、選択されているレコードをDataRow型で別フォームに渡してから、各項目をテキストボックスに表示したいのですがうまくいきません(DataRow型にこだわっているわけではないのですが、レコード1件丸ごと取得する型を他に知らないので例として挙げました)。
DataGridViewのCurrentRowプロパティや、SelectedRows(0)をDataRow型に代入する試みをしましたが、型変換できませんでした。
DataGridViewで選択されているレコード一件まるごと変数に渡す方法というのはあるのでしょうか?
ちなみに、SelectionModeはSelectFullRowに、MultiSelectはFalseにしてあります。
ご存知の方ご教授いただけると助かります。
よろしくお願いします。
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を取得する事が出来ました!
無事解決しました。
型の意識も今後よりいっそうしてレベルアップし行きたいと思います!
ありがとうございました!
No.2
- 回答日時:
DataRowにこだわるのであれば、現在行のDataGridViewRowをまず取得して、その行の主キーの値で、DataTableのFindメソッドかSelectメソッドで検索すれば、現在行のDataRowが取り出せると思うので試してみてはどうですか。
同じ方法ではありませんが、currentrowのindexを取り出して、datagridviewのrows(index)でもdatarowを取得する事が出来ました!
おっしゃる方法も試してみたいと思います!
ありがとうございました!
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も取り出せそうな気はするのですが。。。
お探しの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も見ています
-
C# DataTableに最後に追加した行をDataGridView上で選択状態にする方法は?
C言語・C++・C#
-
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
5
CloseとDisposeの違い
Visual Basic(VBA)
-
6
C# DataGridView のヘッダーセル中央揃え
C言語・C++・C#
-
7
DataGridViewのデータの引渡しについて
Visual Basic(VBA)
-
8
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
9
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
10
VB.net
Visual Basic(VBA)
-
11
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
12
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
13
[VB.net] DataGridViewの列ヘッダー複数行表示に伴う不具合?について
Visual Basic(VBA)
-
14
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
15
DataGridViewに空白がある場合はエラーにしたい
Visual Basic(VBA)
-
16
DataGridView 列ごとの入力制限
Visual Basic(VBA)
-
17
C# 別なフォームへ値を渡す (初心者です)
その他(プログラミング・Web制作)
-
18
DataGridViewにてセル以外をクリックしたか判別
Visual Basic(VBA)
-
19
DataGridViewの各セル幅を自由に決め、その幅で固定したい
Visual Basic(VBA)
-
20
データベースのデータをTextBoxに入力された値で検索しDataGridViewに表示する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPのNULLレコード表示について...
-
ADO VBA 実行時エラー3021
-
ACCESSで大量の更新を行うと「...
-
DataGridViewの、選択されてい...
-
ファイル書込みで一行もしくは...
-
レコードが存在しなかった場合
-
差し込み印刷のレコード数について
-
vbからmdbのレコード削除
-
固有レコード識別子の選択とは
-
データセットのレコード更新が...
-
Access のフォームで新しい行...
-
[VBA] ADOの Clone と AddNew
-
データベースの内容を変数に入...
-
サブフォームに新規レコードを...
-
Access を×ボタンで閉じ...
-
Excel VBA読み込みで文字化けが
-
vb.netのdatatableのレコード削...
-
AccessVBAのMoveメソッドにつき...
-
カレントレコードが無い事を判...
-
桁数を指定してファイルデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードが存在しなかった場合
-
DataGridViewの、選択されてい...
-
ADO VBA 実行時エラー3021
-
差し込み印刷のレコード数について
-
ACCESSで大量の更新を行うと「...
-
ファイル書込みで一行もしくは...
-
カレントレコードが無い事を判...
-
ワードの差込印刷で教えて下さ...
-
アクセスでレポートの1印刷内...
-
DataGridViewの内容をDBに反映...
-
[VBA] ADOの Clone と AddNew
-
固有レコード識別子の選択とは
-
JSPのNULLレコード表示について...
-
Access を×ボタンで閉じ...
-
サブフォームに新規レコードを...
-
データセットのレコード更新が...
-
サブレンジ分割されたNDB(富士...
-
レコードセット(ADO.Recordset)...
-
DataGridViewにてセル以外をク...
-
COBOLでのランダムアクセス
おすすめ情報