2012-09-07 3 views
0

다음 코드에서는 선택한 행의 새 행이 있지만 "데이터 격자 뷰 {인덱스 = 0}"만 첫 번째 열에 추가하면 datagridview의 데이터 소스에 선택된 행을 추가하려고합니다. 행의 행과 나머지 댄 그리드와 결합되어 데이터 테이블 위에서 언급 한 바와 같이datagridview의 행을 데이터 테이블에 추가

if (dataGridView1.SelectedRows[0].IsNewRow) 
     { 
      _dt.Rows.Add(dataGridView1.SelectedRows[0]); 
      dataGridView1.DataSource = null; 
      dataGridView1.DataSource = _dt; 
     } 

     DataTable dtUpdated = (DataTable)dataGridView1.DataSource; 
     dtUpdated.GetChanges(); 

     SqlCommandBuilder cb = new SqlCommandBuilder(_sqlDa); 

     try 
     { 

      _sqlDa.Update(dtUpdated); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 

     } 
+0

DataTable _dt에 이미 바인딩 한 경우 그리드 뷰에 새 행을 추가 할 때 추가해야합니다 당신을 위해 _dt를 써서 첫 번째 문장이 나에게 불필요한 것처럼 보입니다. 또한 .SelectedRows 멤버는 DataGridViewRow를 반환하며 DataRow를 추가해야 할 때 DataTable에 추가하려고하는 것처럼 보입니다. – Dan

답변

0

비어 있습니다, 그래서 당신은 새 행을 추가하거나 그 새 행의 텍스트 자동으로 새로운 행과 업데이트 된 값을 바꿀 때마다 _dt로 업데이트됩니다.

여전히 혼란 스럽거나 위에서 말한 것과 같은 문제가 발생하면 SelectedRows가 'DataGridViewSelectedRowCollection'개체의 컬렉션이므로 'DataGridView1.SelectedRows [0]'을 _dt.Rows에 추가하지 마십시오. 그러면 SelectedRows to datatrow 또는 '_dt.Rows.Add (params Object [] values)'의 다른 오버로드 된 함수를 사용할 수 있습니다.

관련 문제