2012-03-05 54 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是空白的(如果您使用嚮導創建數據源,那麼它將與您的DataSource中的表名相同)。一旦我爲TableAdapter選擇了正確的名稱,一切都很完美。