2016-06-07 1 views
1

모든 예외 오류를 보았지만 문제가 발생하지 않았습니다. 나는 streetId, streetName, fasileOne, fasileTwo를 가지고있는 tblsecondary를 가지고있다. datagridviewcomboboxcolumn에서 값을 선택할 때 행을 채우기 위해 datagridview를 사용하지만 예외 오류가 발생합니다.excpetion 오류 : 인덱스가 범위를 벗어났습니다. 음수가 아니어야하고 컬렉션의 크기보다 작아야합니다.

인덱스가 범위를 벗어났습니다. 음수가 아니어야하며 콜렉션의 크기보다 작아야합니다.

on dataGridView7 [e.RowIndex, 2] .Value = drFound [ "fasileOne"];

코드는 다음과 같습니다 여기

private void dataGridView7_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
     { 
      if ((e.RowIndex >= 0) && (e.ColumnIndex == 1)) // Assuming this is the streetId 
      { 
       int streetId = Convert.ToInt16(dataGridView7.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); 
       DataRow drFound = tblSecondary.Rows.Find(streetId); 
       if (drFound == null) 
       { 
        MessageBox.Show("ddhhdhd"); 
       } 
       else 
       { 
        dataGridView7[e.RowIndex, 2].Value = drFound["fasileOne"]; 
        dataGridView7[e.RowIndex, 3].Value = drFound["fasileTwo"]; 
       } 
      } 

는 DataTable을 사용하고 있습니다 :

public IncidentForm() 
tblSecondary = new DataTable(); 
SqlCommand cmd2 = cnn.CreateCommand(); 
cmd2.CommandText = "select * from street"; 
SqlDataAdapter sdr2 = new SqlDataAdapter(cmd2); 
cmd2.CommandType = CommandType.Text; 
cmd2.Connection = cnn; 
sdr2.Fill(tblSecondary); 
tblSecondary.PrimaryKey = new DataColumn[] { tblSecondary.Columns["streetId"] }; 
} 
+0

그것은 열이 다음 행 년대 초이다. https://msdn.microsoft.com/en-us/library/ms158656(v=vs.110).aspx – juharr

+0

네, 감사합니다. 대단히 감사합니다. –

+0

행이 업데이트되도록 두 번째 콤보 상자를 선택할 때까지 첫 번째 콤보 상자 값을 변경할 때 어떤 이벤트를 사용해야합니까? –

답변

0

문제는 indexer on the DataGridView입니다.
첫번째 인덱스는 열, 행 아닌 columnIndex에 상기 rowIndex에

dataGridView7[2, e.RowIndex].Value = drFound["fasileOne"]; 
dataGridView7[3, e.RowIndex].Value = drFound["fasileTwo"]; 
관련 문제