2017-07-08 10 views
0

私は初心者で、私に同行してください。私はエラーを持っている:私は達成するために何を望むか行収集エラー

"Additional information: Index was out of range. Must be non-negative and less than the size of the collection."

は私のDataGridViewに行をクリックし、テキストボックスで選択した行のすべての値を渡すことです。

第一、私は「表」上のすべてを選択すると、私のDataTableを埋めるためにをMySqlDataAdapterを使用しています:ここで

は、以下の私のコードです。あなたはこのスレッドに返事をしなかった場合

private void loadrecord() 
    { 
     using (MySqlConnection loadcon = new MySqlConnection(connString)) 
     { 
      loadcon.Open(); 
      MySqlCommand loadcom = new MySqlCommand("SELECT * FROM table1", loadcon); 
      MySqlDataAdapter loadad = new MySqlDataAdapter(loadcom); 
      DataTable loaddt = new DataTable(); 
      loadad.Fill(loaddt); 

      BindingSource loadbindsource = new BindingSource(); 
      loadbindsource.DataSource = loaddt; 
      dataGridView1.DataSource = loadbindsource; 
      loadcon.Close(); 
     } 
    } 

I例ではForm1_Load

private void Form1_Load(object sender, EventArgs e) 
    { 
    loadrecord(); 
    } 

に機能loadrecordを呼んでいる第二は最後に、私はこのdataGridView1

private void dataGridView1_CellContentClick_1(object sender, DataGridViewCellEventArgs e) 
    { 
    //I have 3 records. 1 Balice Book1, 2 Coyman Book2, 3 Pale Book3 
    //Click primarykey on datagridview "1" and pass the value of selected row of "1", pass "1" to Textbox1, pass "Balice" to Textbox2 and pass "Book1" to Textbox3 
    //What I have tried so far is this: 
    Textbox1.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); 
    Textbox2.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString(); 
    Textbox3.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString(); 
    //then this error appear whenever I try to click the cells 
    //Additional information: Index was out of range. Must be non-negative and less than the size of the collection. 
    } 

はどうもありがとういます。

答えて

0

変更:

Textbox1.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString(); 

へ:

Textbox1.Text = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); 

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcelleventargs(v=vs.110).aspxでsquizを持っています。

+0

私はそれを試し、私はまだエラーが発生するかどうかを確認します。 – 19GreenBlankets

+0

実際には、セル[0]を設定すると、column_nameはcolumn_idではなくtextboxに値を渡しています。簡単な質問です。私は-1を使用することができないことを知っています。 column_idを取得することは可能ですか?私は本当にcolumn_idの行の値を取得したかったのです。私は私のdatagridviewの4列しか持っていない – 19GreenBlankets

+0

それは別の問題のように聞こえる?もしそうなら、新しい質問を使って新しい投稿を作成することもできます。 – mjwills