C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[13]: DataGridViewで選択した行を取り出す


(過去ログ 50 を表示中)

[トピック内 21 記事 (1 - 20 表示)]  << 0 | 1 >>

■27683 / inTopicNo.1)  DataGridViewで選択した行を取り出す
  
□投稿者/ のろ (8回)-(2008/11/12(Wed) 11:16:58)

分類:[.NET 全般] 

いつもお世話になってます。

VS2005のWindowsアプリで、IDとNameを入力するTextBoxとDataGridViewを貼り付けた画面(Form1)を作成しています。
DataGridViewで選択された行を取り出して、その内容をForm2に反映させたいです。
(Form2の画面には、IDとNameを入力するTextBoxが貼り付けてあります。)

**DataGridViewの内容↓**
protected void MakeGrid()
{
DataTable dt = new DataTable();

dt.Columns.Add(new DataColumn("ID", typeof(string)));
dt.Columns.Add(new DataColumn("Name", typeof(string)));

List<aaMaster> Alist = aaMaster.selectAll();
//CustomerMaster.selectAllで全件を取ってくるselect文を書いています。

foreach (aaMaster a in Alist)
{
DataRow row = dt.NewRow();

row["ID"] = a.ID;
row["Name"] = a.Name;

dt.Rows.Add(row);
}
dataGridView1.DataSource = dt;
}

初心者なので説明不足の部分もあるかと思いますが、どなたかよろしくお願いしますm(__)m

引用返信 編集キー/
■27684 / inTopicNo.2)  Re[1]: DataGridViewで選択した行を取り出す
□投稿者/ .SHO (17回)-(2008/11/12(Wed) 11:23:38)
で、質問は何なんですか?
このソースが動かないってことですか?
引用返信 編集キー/
■27685 / inTopicNo.3)  Re[2]: DataGridViewで選択した行を取り出す
□投稿者/ のろ (9回)-(2008/11/12(Wed) 11:27:15)
No27684 (.SHO さん) に返信
DataGridViewで選択された行を取り出して、その内容をForm2に反映させたいです。

引用返信 編集キー/
■27687 / inTopicNo.4)  Re[3]: DataGridViewで選択した行を取り出す
□投稿者/ みきぬ (208回)-(2008/11/12(Wed) 12:04:46)
No27685 (のろ さん) に返信
> DataGridViewで選択された行を取り出して、その内容をForm2に反映させたいです。
>
・行が選択されたことを、適当なイベントで捕捉する
・そのイベント処理で、DataGridView のどの行が選択されたかを特定する
・行が特定できたら、そこから個々の値を取り出す(DataGridViewRow でもいいし、そこから DataRowView や DataRow を取り出して使ってもよい)
・取り出した値を Form2 のテキストボックスに表示させる

れっつとらい。
引用返信 編集キー/
■27688 / inTopicNo.5)  Re[4]: DataGridViewで選択した行を取り出す
□投稿者/ えちぜん (2回)-(2008/11/12(Wed) 12:28:00)
テキストボックスと、DataTableのカラムをバインドしてみてはどうでしょうか。
引用返信 編集キー/
■27689 / inTopicNo.6)  Re[4]: DataGridViewで選択した行を取り出す
□投稿者/ のろ (10回)-(2008/11/12(Wed) 13:06:50)
No27687 (みきぬ さん) に返信
> ■No27685 (のろ さん) に返信

> ・行が選択されたことを、適当なイベントで捕捉する
> ・そのイベント処理で、DataGridView のどの行が選択されたかを特定する
> ・行が特定できたら、そこから個々の値を取り出す(DataGridViewRow でもいいし、そこから DataRowView や DataRow を取り出して使ってもよい)
> ・取り出した値を Form2 のテキストボックスに表示させる
>
> れっつとらい。

やりたいことはまさしく記述いただいた通りなのですが…(*_*;)
やっぱりよく分からないです。すみません。。


引用返信 編集キー/
■27690 / inTopicNo.7)  Re[5]: DataGridViewで選択した行を取り出す
□投稿者/ のろ (11回)-(2008/11/12(Wed) 13:10:47)
No27688 (えちぜん さん) に返信
> テキストボックスと、DataTableのカラムをバインドしてみてはどうでしょうか。

●バインドとは
バインドとは、データベース・マネージャーがアプリケーションの実行時に
データベースをアクセスするために必要とするパッケージを作成する処理。
バイディング中、データベース・マネージャーはSQL文で使用されている表に関する統計情報を読み取り解析し
この統計情報からはデータベースをアクセスする最も効率のよい方法が決定される。
アクセス・プランはデータベースのシステム・カタログの中に保存される。

上のようなことをおっしゃっているのでしょうか…(>_<)

引用返信 編集キー/
■27692 / inTopicNo.8)  Re[5]: DataGridViewで選択した行を取り出す
□投稿者/ えちぜん (3回)-(2008/11/12(Wed) 13:50:42)
テキストボックスの"DataBindings"の設定を行ってみてはということでした。
確か、
TextBox.DataBindings.add(new System.Windows.Forms.Binding("Text", dt, "ID",true));
こんな感じだったかと。
GUI上で設定も出来ます。

引用返信 編集キー/
■27693 / inTopicNo.9)  Re[6]: DataGridViewで選択した行を取り出す
□投稿者/ ロック (137回)-(2008/11/12(Wed) 14:02:50)
意図した動きなら良いのですが
テキストボックスともバインドした場合、テキストボックスで修正した内容が
DataGridViewにも反映されてしまうという事に注意した方が良いと思います


引用返信 編集キー/
■27695 / inTopicNo.10)  Re[7]: DataGridViewで選択した行を取り出す
□投稿者/ 初心者 (190回)-(2008/11/12(Wed) 14:24:20)
どう実装したいのか知りませんが。

DataGridView.CellClick・・・行をクリックすると発生するイベント
DataGridView.CurrentRow・・・選択行のデータ取得

れっつとらい。
引用返信 編集キー/
■27696 / inTopicNo.11)  Re[6]: DataGridViewで選択した行を取り出す
□投稿者/ みきぬ (209回)-(2008/11/12(Wed) 15:02:22)
No27692 (えちぜん さん) に返信
> テキストボックスの"DataBindings"の設定を行ってみてはということでした。
> 確か、
> TextBox.DataBindings.add(new System.Windows.Forms.Binding("Text", dt, "ID",true));
> こんな感じだったかと。
> GUI上で設定も出来ます。
>
表示したい先の TextBox って、一覧とは別の画面(Form2)にあるけど平気?

# DataBindings を使ったことがないので、特に根拠があっての質問じゃないけど
引用返信 編集キー/
■27698 / inTopicNo.12)  Re[7]: DataGridViewで選択した行を取り出す
□投稿者/ えちぜん (4回)-(2008/11/12(Wed) 16:17:28)
No27696 (みきぬ さん) に返信
> 表示したい先の TextBox って、一覧とは別の画面(Form2)にあるけど平気?
>
> # DataBindings を使ったことがないので、特に根拠があっての質問じゃないけど
確かめたわけではないですが、DataTableインスタンスへの参照が取れれば大丈夫と思います。

Form1のDataTableをForm2から参照していいのかなどの問題はあるかもしれません。

あと、データソース更新モードというのを設定すれば、
Form2上のテキストボックスを変更してもデータテーブルの値変わらないかも
引用返信 編集キー/
■27699 / inTopicNo.13)  Re[7]: DataGridViewで選択した行を取り出す
□投稿者/ のろ (13回)-(2008/11/12(Wed) 16:25:17)
書き込みしてくださった皆様ありがとうございますm(__)m
DataBindingsなど試したのですが、結局よく分からず…。。

    private void 詳細ボタン_Click(object sender, EventArgs e)
{
//DataGridViewで選択された行のIDを取得
string gridID = dataGridView1.CurrentCell.Value.ToString();//ここでどの行が選択されているのか認識してます。

List<aaMaster> am = aaMaster.IsID(gridID);
      //IDでデータ(ID、Name)を引っ張ってくる

Form2 f2 = new Form2();
f2.ShowDialog();
}

とりあえずこんな感じで書いてみました('▽';)
あとは、Form2にForm1から引っ張ってきたデータを反映させればいいのですが、悩んでおります…orz
Form1からForm2にどうやってデータを反映させれば良いのか。

知恵を貸して下さい。
引用返信 編集キー/
■27700 / inTopicNo.14)  Re[8]: DataGridViewで選択した行を取り出す
□投稿者/ .SHO (20回)-(2008/11/12(Wed) 16:36:47)
> Form1からForm2にどうやってデータを反映させれば良いのか。

コンストラクタで渡すとか。。。
引用返信 編集キー/
■27705 / inTopicNo.15)  Re[8]: DataGridViewで選択した行を取り出す
□投稿者/ えちぜん (5回)-(2008/11/12(Wed) 17:55:55)
Form2に値を渡すための関数やアクセサを用意しておいて、
f2.ShowDialogする前に、その関数で取得したデータを渡してはどうでしょうか。


DataBindingsの件についてはなかったことにしてください。

検証してみたのですが、
Formをまたぐと、DataTableとの連携がうまくいかない
TextBoxとDataRowが連携しているような動作をします。
何か方法があるかもしれませんが。
引用返信 編集キー/
■27707 / inTopicNo.16)  Re[9]: DataGridViewで選択した行を取り出す
□投稿者/ のろ (14回)-(2008/11/12(Wed) 18:18:25)
>.SHOさま、えちぜんさま

    private Form2 otherForm = new Form2();
private void GetOtherFormTextBox()
{
ID_textBox.Text = otherForm.ID_textBox.Text;
}
    
private void 詳細ボタン_Click(object sender, EventArgs e)
{
GetOtherFormTextBox();

//DataGridViewで選択された行のIDを取得
string gridID = dataGridView1.CurrentCell.Value.ToString();//ここでどの行が選択されているのか認識してます。

List<aaMaster> am = aaMaster.IsID(gridID);
     //IDでデータ(ID、Name)を引っ張ってくる

Form2 f2 = new Form2();
f2.ShowDialog();
}

こんな感じですかね……('へ';)

引用返信 編集キー/
■27728 / inTopicNo.17)  Re[10]: DataGridViewで選択した行を取り出す
□投稿者/ あ (15回)-(2008/11/13(Thu) 00:37:19)
No27707 (のろ さん) に返信
> >.SHOさま、えちぜんさま
> こんな感じですかね……('へ';)
>
・Form2に、引数に渡された値を自分の持ってるTextBoxにセットするメソッドを作成する。
・Form1から上記で作成したメソッドを呼び出す。
必要なのはこれだけなんだけどね。

それと↓のotherFormとf2はまったくの別物だという事は理解されていますか?
>private Form2 otherForm = new Form2();
>Form2 f2 = new Form2();

引用返信 編集キー/
■27735 / inTopicNo.18)  Re[11]: DataGridViewで選択した行を取り出す
□投稿者/ のろ (15回)-(2008/11/13(Thu) 09:36:59)
No27728 (あ さん) に返信
> ・Form2に、引数に渡された値を自分の持ってるTextBoxにセットするメソッドを作成する。
> ・Form1から上記で作成したメソッドを呼び出す。
> 必要なのはこれだけなんだけどね。

はい…がんばります。。

> それと↓のotherFormとf2はまったくの別物だという事は理解されていますか?
> >private Form2 otherForm = new Form2();
> >Form2 f2 = new Form2();
>

Form2でForm1のTextBoxの中身が渡せればいいのですけど…。
別物だと問題ありでしょうか。
引用返信 編集キー/
■27761 / inTopicNo.19)  Re[12]: DataGridViewで選択した行を取り出す
□投稿者/ あ (16回)-(2008/11/14(Fri) 01:09:03)
2008/11/14(Fri) 01:37:34 編集(投稿者)
2008/11/14(Fri) 01:35:37 編集(投稿者)
2008/11/14(Fri) 01:34:35 編集(投稿者)
2008/11/14(Fri) 01:10:34 編集(投稿者)

■No27735 (のろ さん) に返信
> Form2でForm1のTextBoxの中身が渡せればいいのですけど…。
Form2「で」とはどういう意味?
Form2「に」Form1のTextBoxの値を渡したいって事でいいんだよね?
僕が何か勘違いしてるならごめんなさい。

> 別物だと問題ありでしょうか。
のろさんの希望を実現させるためには問題になるでしょうね。

ちょっとした問題をば。
下記のクラスAのHogeメソッドとfugaメソッドの実行結果はそれぞれどーなるでしょうか。
※最近VBしか触ってないからコードあやしいかも…

class A
{
     string text = "hogehoge";
     void Hoge()
     {
          B b = new B();
          b.SetText(text);
          b.ShowText();
     }

     B b2 = new B2;
     void fuga()
     {
         b2.SetText(text);
         B b3 = new B();
         b3.ShowText();
     }
}

class B
{
     string text = "nahanaha";
     public void SetText(string val)
     {
         this.text = val;
     }
     
     public void ShowText()
     {
          Console.WriteLine(this.text);
     }
}


#紛らわしかったので文言修正
#図表モード解除されちゃったから再修正orz
#なんか変なタグが・・・

引用返信 編集キー/
■27763 / inTopicNo.20)  Re[13]: DataGridViewで選択した行を取り出す
 
□投稿者/ のろ (16回)-(2008/11/14(Fri) 09:22:00)
No27761 (あ さん) に返信
> 下記のクラスAのHogeメソッドとfugaメソッドの実行結果はそれぞれどーなるでしょうか。
> ※最近VBしか触ってないからコードあやしいかも…
>
> class A
> {
> string text = "hogehoge";
> void Hoge()
> {
> B b = new B();
> b.SetText(text);
> b.ShowText();
> }
>
> B b2 = new B2;
> void fuga()
> {
> b2.SetText(text);
> B b3 = new B();
> b3.ShowText();
> }
> }
>
> class B
> {
> string text = "nahanaha";
> public void SetText(string val)
> {
> this.text = val;
> }
>
> public void ShowText()
> {
> Console.WriteLine(this.text);
> }
> }
>
>
> #紛らわしかったので文言修正
> #図表モード解除されちゃったから再修正orz
> #なんか変なタグが・・・

Hogeメソッド→"hogehoge"
fugaメソッド→"nahanaha"
でしょうか。

>Form2「で」とはどういう意味?
>Form2「に」Form1のTextBoxの値を渡したいって事でいいんだよね?

すいません。私が■27707 / inTopicNo.16)に書いたコードは、私がやりたかったことから逸れてました。
私がやりたかったのは、<<DataGridViewから選んだ行の値を、Form2に反映させる>>ことだったので、Form1のTextBoxの値をForm2のTextBoxに反映させる■27707 / inTopicNo.16)で書いたコードは間違いです…(><。)



引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -