質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
DataSet

DataSetは、ADO.NETアーキテクチャのコンポーネントです。データベースから取得したレコードをメモリ領域に格納するクラスを指します。データの保持やテーブル間のリレーション・制約といった保持も可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

15507閲覧

DBからDataTableの選択した行をテキストボックスに表示したい

igu325317

総合スコア12

DataSet

DataSetは、ADO.NETアーキテクチャのコンポーネントです。データベースから取得したレコードをメモリ領域に格納するクラスを指します。データの保持やテーブル間のリレーション・制約といった保持も可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2017/09/26 08:23

住所録をVisualStudioのC#で作成しております。

ウィンドウズフォーム1でDBから読み取ってきたテーブルを、データグリッドビューに表示し、その行のボタンを押すとフォーム2に移動し、選択された行をテキストボックスに表示したいところです。
SQL SaverのDBでDBの名前がAddress_m1、テーブル名がTable_1です。
要らないコードもたくさん書いてあると思います。すみません。

フォーム2の
DataRow nr = dt.Rows[id];
のところでで、
データ列名が正しいことを確認してください。
とエラーがでました。

public Form2(int id) //編集押したとき最初にロードする { InitializeComponent(); mae = "hennsyuu"; DataSet dataset = new DataSet("ds");//もともとあるデータセット DataTable dt = dataset.Tables.Add("Table");//もともとあるテーブル Address_m1DataSet.Table_1DataTable dataTable = new Address_m1DataSet.Table_1DataTable(); Address_m1DataSet.Table_1Row workRow = dataTable.NewTable_1Row(); // TODO: このコード行はデータを 'address_m1DataSet.Table_1' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 this.table_1TableAdapter1.Fill(this.address_m1DataSet1.Table_1); DataRow nr = dt.Rows[id]; { textBox1.Text = nr["Name"].ToString(); textBox2.Text = nr["namekana"].ToString(); textBox3.Text = nr["number"].ToString(); textBox4.Text = nr["Address"].ToString(); textBox5.Text = nr["Tel"].ToString(); textBox6.Text = nr["Born"].ToString(); textBox7.Text = nr["_E_mail"].ToString(); } }

 


データグリッドビューの編集ボタンを押したときの処理です。↓

//gridviewの編集押したとき private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { string sid = dataGridView1.Rows[e.RowIndex].Cells["iDDataGridViewTextBoxColumn"].Value.ToString(); int id = int.Parse(sid); //インデックスの行を選択する dataGridView1.CurrentRow.Selected = true; foreach (DataGridViewRow r in dataGridView1.SelectedRows) { Console.WriteLine(r.Index);//選択されている行番号を表示 string sr =r.Index.ToString(); int ir = int.Parse(sr); //Form2クラスのインスタンスを作成し行番号を渡す Form2 form2 = new Form2(id); form2.ShowDialog(this);// 編集画面に移動 form2.Dispose(); //フォームが必要なくなったら消す this.table_1TableAdapter.Fill(this.address_m1DataSet.Table_1); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

この書き方ですと、少なくともdtはカラムも行もないdatatableですね。
全体が見えないので的外れだったら申し訳ないのですが、その前の処理で

// TODO: このコード行はデータを 'address_m1DataSet.Table_1' テーブルに読み込みます。必要に応じて移動、または削除をしてください。 this.table_1TableAdapter1.Fill(this.address_m1DataSet1.Table_1);

としてデータを読み込んでますよね。

であれば、

DataRow nr = this.address_m1DataSet1.Table_1.Rows[id];`

とならないでしょうか?

投稿2017/09/26 08:41

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

igu325317

2017/09/26 09:13

ありがとうございます!!テキストボックスにDB選択した値が入りました。 すみません、あと、表示なのですが、フォーム1に戻って form2.ShowDialog();で表示させようと思ったのですが、1行目の値が入ってしまうのですがどうすべきでしょうか。 form2.ShowDialog(this);と書いていましたが、thisにフォーム1のクラスが入っており消しました。
motuo

2017/09/26 09:16

すいません。上記のやりたいこととプログラムのイメージが全くわかないので、書いたコードを質問に追記するか、もしくは別質問として立てて頂けますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問