1

我对 C# 中的 DataBindings 有疑问。

我有一个 BindingSource,它的 DataSource 设置为 DataRowView

然后我使用绑定源为我的控件设置所有数据绑定。

这是我的代码:

bsDataRecord.DataSource = myDataRow; //bsDataRecord is a BindingSource and myDataRow is a DataRowView
//Add Databinding to my controls
dateNextDate.DataBindings.Add("Value", bsDataRecord, "Next_Date", false, DataSourceUpdateMode.OnPropertyChanged); //DateTimePicker
textInformation.DataBindings.Add("Text", bsDataRecord, "Information", false); //TextBox
//more controls, etc

我的数据绑定一切正常。因此,当我选择控件并输入一个值时,myDataRow 就会更新。

当我尝试在代码中设置控件的值时出现我的问题,例如

textInformation.Text="Test";

当我这样做时 myDataRow 没有更新。我可以让 myDataRow 更新的唯一方法是提供我已更新焦点的控件。

希望这是有道理的!?有人有什么想法吗?

提前致谢。

我正在使用 c#.Net 4.0。

4

2 回答 2

2

在有问题地设置数据源的属性后,您需要让控件从数据源重新读取它们的值。通常是一个简单的调用

dataBindingSource.ResetBindings(false); // false for value change not schema change

但您也可以按控件使用:

foreach (Binding b in myControl.DataBindings) b.ReadValue();

Binding.ReadValue() 使控件的绑定属性设置为数据源值

希望这可以帮助!

于 2012-10-15T14:09:43.000 回答
0

如果您“手动”更新(非双向)绑定的目标,则会破坏绑定并且它将不再起作用。这是正常行为。

因此,使您的绑定双向实现您想要做的事情。

于 2012-10-15T14:05:28.253 回答