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

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

ただいまの
回答率

90.47%

  • C#

    7471questions

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

  • Visual Studio

    1922questions

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

  • DataSet

    29questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,737

igu325317

score 4

住所録を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);
            }
        }
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

この書き方ですと、少なくとも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 18:13

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

    キャンセル

  • 2017/09/26 18:16

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

    キャンセル

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

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    7471questions

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

  • Visual Studio

    1922questions

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

  • DataSet

    29questions

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