c#数据库不从数据绑定更新

时间:2011-03-22 13:17:59

标签: c# winforms

我对Windows Forms比较陌生,无法获取包含多个文本字段的表单来更新数据库。

我填充数据集,将数据绑定添加到每个字段,并向每个更新数据库的字段添加一个leave事件。

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 个答案:

答案 0 :(得分:2)

DataBindings的default DataSourceUpdateMode是OnValidation:由于在after the Leave event之前不会调用验证事件,因此不会更新值。

为DataBindings指定DataSourceUpdateMode.OnPropertyChanged应该有效。

答案 1 :(得分:0)

不确定此问题是否仍然存在,我只是想贡献一些对我有帮助的事情。我在DataSet,数据绑定和数据方面遇到了同样的问题,这些问题在DataSet中已更改,但在数据库中未更改。我尝试了所有这些提示,但似乎没有任何帮助。

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

这对我有帮助,所以我可以将数据绑定到数据集,然后,当我想更新数据时,我将“EndEdit()”设置为当前数据集中的每个表。

我也试过这个:

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

没有改变,我也试过.GetChanges()和.HasChanges(),但.EndEdit()是我的代码中缺少的东西。

我希望这有助于某人。

P.S。对不起我的英文不好,自从我上次使用它已经有一段时间了(: