- - PR -
DataGridViewについて
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-02-03 15:09
開発言語:VC#2005
いつも参考にさせてもらってます。 また分からない事があったので質問させて下さい。 datasetを使いDataGridViewにデータを表示させています。 SqlDataAdapter da = new SqlDataAdapter(selectStr, connStr); DataSet ds = new DataSet(); da.Fill(ds, "tblKihon"); bindingSource1.DataSource = ds; bindingSource1.DataMember = "tblKihon"; dgvUketuke.DataSource = bindingSource1; ------------------------------------------------------------------ 表示させているデータを、別に配置しているテキストボックスにも表示させるには どうしたらいいのでしょうか? 色々と調べたのですが、結果に至っていません。 textBox1.DataBindings.Add("Text", ds.Tables["tblKihon"], "ID"); textBox2.DataBindings.Add("Text", ds.Tables["tblKihon"], "確認"); textBox3.DataBindings.Add("Text", ds.Tables["tblKihon"], "特記"); このようにDataBindingsを使えば表示させる事は可能なのですが、 選択行を変えたらそれに伴ってテキストボックスの内容もその行に対応したデータを 表示させたいと思っています(下矢印移動、マウスで行選択) 「選択行が変わった」時のイベントもどれを使っていいのかが分かっていません・・。 (selectionmodeを「FullRowSelect」にしています) 誠にすいませんが、知恵を貸してください。 宜しくお願い致します。 _________________ | ||||||||||||
|
投稿日時: 2009-02-03 16:13
まず、TextBoxへのDataBindはBindingSouce経由で行うようにしましょう。
フォームデザイナのプロパティエディタからできますので。 その後、BindingSourceのPositionプロパティに、DataGridViewの選択行を設定してやればうまくいくのではないかと思います。 BindingSource.Positionプロパティ http://msdn.microsoft.com/ja-jp/library/system.windows.forms.bindingsource.position(VS.80).aspx DataGridViewの選択行が変更されたことを感知するイベントは、 DataGridView イベント http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridview_events(VS.80).aspx この辺を眺めてそれっぽいのを使ってください。 #CurrentCellChangedあたりかな? _________________ まさるblog [ メッセージ編集済み 編集者: まさる 編集日時 2009-02-03 16:16 ] | ||||||||||||
|
投稿日時: 2009-02-03 16:32
まさる様回答ありがとうございます。
感謝です。 まだ勉強し初めで、丁寧な回答頂いたのですが、まだ分からない所です・・。 ---------------------------------------------------------------------- まず、TextBoxへのDataBindはBindingSouce経由で行うようにしましょう。 フォームデザイナのプロパティエディタからできますので。 ---------------------------------------------------------------------- この部分ですが、これはTextBoxのプロパティから「DataBindings」の部分を設定するのでしょうか? 詳細の所をクリックすると、『フォーマットと詳細バインド』の画面が表示されます。 何を設定するのかが分からない状況です。 誠にすいませんが、もう少し教えていただけないでしょうか? 宜しくお願い致します。 _________________ | ||||||||||||
|
投稿日時: 2009-02-03 17:59
あ・・・型付データセットを使っているわけではなかったのですね。 じゃあひとまずデザイナから設定するというところは忘れてください。 代わりにコードでBindingSource経由でデータバインドを設定する方法です。 textBox1.DataBindings.Addメソッドの引数に、System.Windows.Forms.Bindingクラスのインスタンスを渡してやる形になります。 具体的には、
といった感じです。 Bindingクラスのコンストラクタについては以下を参照してください。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.binding.binding(VS.80).aspx なお、デザイナでDataBindを設定する方法については、 http://msdn.microsoft.com/ja-jp/library/h974h4y2(VS.80).aspx や http://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/cursor/cs.aspx を参考にしてください。 _________________ まさるblog | ||||||||||||
|
投稿日時: 2009-02-03 18:23
まさる様
早速のお返事ありがとうございます。
説明不足で申し訳有りませんでした。 なにぶんまだまだ勉強不足でして・・。
この通りにコードを追加したのですが、エラーがでてしまったので私が最初に書いた、
コードの中の「ds.Tables["tblKihon"]」を「bindingSource1」に変更したら 上手く行きました! 選択行が変更されたイベントを使用しないでも正しくできました。 カーソルで行変更したら、その行に対応したデータがtextboxに表示されました。 イベントを使用しなくてもできるのですね。 ご丁寧に回答ありがとうございました。 また機会があれば宜しくお願い致します。 |
1