2012-03-05 7 views
0

이것은 아주 작은 프로그램입니다. 그래서 방금 내 데이터 소스에 대한 자동 생성 코드를 사용하고 WinForm에서 datagridview를 드래그/드롭했습니다. 행의 열을 수동으로 업데이트하려고하지만 내 tablemanager의 "UpdateAll"에 도달 할 때마다 실패합니다. 다음은 셀 내용을 더블 클릭하는 코드입니다.데이터 세트, tablemanager 및 bindingsource를 사용하여 데이터베이스를 업데이트하는 방법은 무엇입니까?

private void dgv1DataGridView_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e) 
    { 
     try 
     { 
      string delMemberID = dgv1DataGridView.Rows[e.RowIndex].Cells[0].Value.ToString(); 
      ds1DataSet.Table1.Rows[ds1DataSet.Table1.Rows.IndexOf(ds1DataSet.Table1.FindByMemberID(delMemberID))][9] = MemberID.ToString(); 
      this.Validate(); 
      this.bs1BindingSource.EndEdit(); 
      this.tableAdapterManager.UpdateAll(this.ds1DataSet); 
      MessageBox.Show("Replacement Successful"); 
      this.Close(); 
     } 
     catch 
     { 
      MessageBox.Show("Replacement Failed"); 
     } 
    } 

내 기대치는; 사용자가 DataGridview 행 안의 아무 곳이나 두 번 클릭하면 해당 열의 다른 "MemberID"로 해당 행을 업데이트하고 데이터베이스를 포함하여 모든 곳에서 데이터를 저장 한 다음 폼을 닫아 부모 폼을 반환합니다.

답변

0

어떤 이유로 든 내 tableAdapterManager가 해당 양식의 TableAdapter에 연결되지 않았습니다. 일단 연결하면 위 코드가 정상적으로 작동합니다.

정확하게 말하면 폼의 디자인보기를 클릭하고 디자인 창의 아래쪽에있는 tableAdapterManager를 클릭했습니다. 그런 다음 "속성"창에서 TableAdapter가 비어있는 것으로 나타났습니다 (마법사를 사용하여 데이터 소스를 만든 경우 데이터 소스의 테이블과 동일한 이름이 지정됨). TableAdapter의 올바른 이름을 선택하면 모든 것이 완벽하게 작동했습니다.

관련 문제