我在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。
答案 0 :(得分:2)
在有问题地设置数据源的属性后,您需要让控件从数据源重新读取它们的值。通常是一个简单的电话
dataBindingSource.ResetBindings(false); // false for value change not schema change
但你也可以控制使用它:
foreach (Binding b in myControl.DataBindings) b.ReadValue();
Binding.ReadValue()使控件的bound属性设置为数据源值
希望这有帮助!
答案 1 :(得分:0)
如果您“手动”更新(非双向)绑定目标,则会破坏绑定,它将不再起作用。这是正常行为。
所以让你的绑定双向实现你想要做的事情。