2011-03-22 49 views
0

我對Windows窗體比較陌生,無法獲取帶有多個文本字段的窗體來更新數據庫。c#數據庫沒有從數據綁定更新

我填充數據集,將數據綁定添加到每個字段並向每個更新數據庫的字段添加一個離開事件。

clientsTableAdapter.FillByID(dataSetClients.Clients, tempID); 

txtForename.DataBindings.Add("Text", dataSetClients.Clients, "Forename"); 
txtForename.Leave += new EventHandler(updateDataSet); 

private void updateDataSet(object sender, EventArgs e) 
{ 
    this.clientsTableAdapter.Update(this.dataSetClients.Clients); 
} 

數據庫不更新,我已經在許多不同的方式,似乎工作是,如果我手動更新數據集則適配器上運行.update(),像這樣的唯一途徑嘗試這一點;

this.dataSetClients.Clients.Rows[0]["Forename"] = "New Forename"; 
this.clientsTableAdapter.Update(this.dataSetClients.Clients); 

任何幫助或關於這個問題的指導意見是極大的讚賞。

回答

2

DataBindings的default DataSourceUpdateMode是OnValidation:因爲驗證事件直到after the Leave event才被調用,所以值不會更新。

指定DataSourceUpdateMode.OnPropertyChanged爲DataBindings應該工作。

+0

雖然這是有益的,謝謝,它並沒有解決問題。數據綁定不是問題,當我運行Update()功能在適配器上時是dosnt工作 – baked 2011-03-22 14:10:06

+0

@baked當你運行Update()from Leave時,數據集已經用新值更新了嗎? – stuartd 2011-03-22 14:14:53

+0

@Stuart是的,它只是沒有用(新更新的)數據集 – baked 2011-03-22 14:28:47

0

不知道這個問題是否仍然存在,我只是想貢獻幫助我的東西。 DataSet,Databinding和Data在DataSet中發生了變化,但在數據庫中發生了變化。我嘗試了所有這些技巧,但似乎沒有任何幫助。

DataSet.Data.Tables[0].Rows[0].EndEdit(); //0 for your Index/Tablename 

,幫助我,這樣我就可以將數據綁定到數據集,然後,當我想更新數據,我把當前的數據集「EndEdit中()」每個表格。

我也tryed這一點:

foreach (Control bla in DisplayDict[SubTyp.ToString()].DataControlHelper.Values) 
{ 
    bla.BindingContext[DisplayDict[SubTyp.ToString()].DBData.Data].EndCurrentEdit(); 
} 

這讓沒有變化,我也tryed .GetChanges()和.HasChanges(),但.EndEdit()是一兩件事在我的代碼失蹤。

我希望這可以幫助別人。

P.S.對不起我的英文不好,已經有一段時間了,因爲我上次使用它(: