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

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

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

Re[5]: dataGridViewの行の値を取得しテキストボックスに反


(過去ログ 89 を表示中)

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

■53068 / inTopicNo.1)  dataGridViewの行の値を取得しテキストボックスに反
  
□投稿者/ 彩子 (1回)-(2010/09/02(Thu) 14:54:19)

分類:[C#] 

初めまして。C#初心者です。

VC#2010で簡単なDBアプリケーションを作成しています。
データベースはMySqlを利用しています。

Form1の右半分はdataGridView1で、フィールド数は10個です。
左半分にはtextBox1〜textBox10まで、計10個のテキストボックスが表示されています。

dataGridView1のレコードセレクタをクリックした時に
その行のレコードをtextBox1〜10に反映させたいのですが、上手くいきません。

下記のようなコードで、
Form1にボタンを配置してクリックでフィールドの1つ目(userId)だけは取得できるので、
        private void button1_Click(object sender, EventArgs e)
        {
            object _object = dataGridView1.CurrentCell.Value;
            textBox1.Text = _object.ToString();//userId取得
        }
取得したuserIdをWHERE条件にしてクエリを投げれば上手くいくと思うのですが、
ボタンをではなくレコードセレクタをクリックする事で処理を行いたいです。

なので、dataGridView1_RowEnterやRowLeave、RowStateChanged等を試してみたのですが、反映されず。
見当違いなのかと色々と検索してみたのですが、どうにも手詰まりなので質問させて頂きました。

説明が解り難いかと思いますが、よろしくお願い致します。

引用返信 編集キー/
■53070 / inTopicNo.2)  Re[1]: dataGridViewの行の値を取得しテキストボックスに反
□投稿者/ マサヤ (134回)-(2010/09/02(Thu) 15:23:47)
dataGridView1_CellClickイベントです。
eの中にRowIndexが入ってます。
例)下記でセレクタの指定カラムの値が取れます。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
string test = dataGridView1.Rows[e.RowIndex].Cells["カラム名"].Value.ToString();
MessageBox.Show(test);
}
引用返信 編集キー/
■53071 / inTopicNo.3)  Re[1]: dataGridViewの行の値を取得しテキストボックスに反
□投稿者/ ごう (175回)-(2010/09/02(Thu) 15:26:30)
No53068 (彩子 さん) に返信

dataGridView内のレコードセレクタがクリックされたときに、クリックされた行の番号を取得する方法です。

// セルのどこかがクリックされた
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
{
    // レコードセレクタがクリックされた
    if(e.ColumnIndex < 0 )
    {
        MessageBox.Show(e.RowIndex.ToString() + "行目");
    }
}

引用返信 編集キー/
■53078 / inTopicNo.4)  Re[2]: dataGridViewの行の値を取得しテキストボックスに反
□投稿者/ 彩子 (2回)-(2010/09/02(Thu) 16:58:07)
マサヤ様、ごう様、お二人ともありがとうございます。

教えて頂いたソースをコピペしてみましたが、メッセージボックス自体が出ません。
ただ、エラー表示もないので、何か他に原因があるのではないかと思ったりもしています。
表示されるデータがMySqlだから?とか。

せっかくお教え頂きましたのに、活用しきれず申し訳ありません。
もう一度、最初から作ってみます。

引用返信 編集キー/
■53079 / inTopicNo.5)  Re[3]: dataGridViewの行の値を取得しテキストボックスに反
□投稿者/ 魔界の仮面弁士 (1785回)-(2010/09/02(Thu) 17:04:10)
No53078 (彩子 さん) に返信
> 表示されるデータがMySqlだから?とか。
DataGridView に表示される時点では、DataTable 等に変換されていますので、
その元データがどこから取得された物であるかは、関係無いと思います。

> 教えて頂いたソースをコピペしてみましたが、メッセージボックス自体が出ません。
> ただ、エラー表示もないので、何か他に原因があるのではないかと思ったりもしています。
CellClick イベントは呼び出されていますか?

イベント自体が呼ばれていないなら、イベントハンドラを登録し忘れているのかも知れません。
イベントが呼ばれる場合は、その後の if 条件が true/false のいずれかを確認してみましょう。
引用返信 編集キー/
■53080 / inTopicNo.6)  Re[3]: dataGridViewの行の値を取得しテキストボックスに反
□投稿者/ ごう (178回)-(2010/09/02(Thu) 17:05:27)
No53078 (彩子 さん) に返信

> 教えて頂いたソースをコピペしてみましたが、メッセージボックス自体が出ません。

まさか、そのままコピペしてるのでは?
それでは動かないと思いますよ。

コントロールに「イベント」を登録する方法は知ってますか?
わからなければ、以下を参考にしてください。
http://dobon.net/vb/dotnet/beginner/eventhandle.html

イベントを登録し(今回ならCellClickイベントですね)、dataGridView1_CellClick関数を作りましょう。
引用返信 編集キー/
■53082 / inTopicNo.7)  Re[4]: dataGridViewの行の値を取得しテキストボックスに反
□投稿者/ マサヤ (135回)-(2010/09/02(Thu) 17:17:45)
DataGridViewにフォーカスを当てる → 画面右下のプロパティ内のカミナリマークをクリック
→ [CellClick]をダブルクリック
これでコードにCellClickイベントがボタンクリックイベントのように作成されます。
その中でクリックされた行、もしくは行の内容を取得するロジックを記述してください。
引用返信 編集キー/
■53099 / inTopicNo.8)  Re[5]: dataGridViewの行の値を取得しテキストボックスに反
□投稿者/ 彩子 (3回)-(2010/09/03(Fri) 08:58:09)
魔界の仮面弁士 様、ごう 様、マサヤ 様

皆様にご指摘頂いたように、
イベントに登録しておりませんでした。

書けば動くと思っておりましたので・・・申し訳ありません。
もっと勉強します。

皆様、本当にありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -