【发布时间】:2020-06-13 07:40:57
【问题描述】:
我有一个表单,它的控件绑定到一个名为“userbindingsource”的绑定源。当表单加载时,bindingsrource 中的所有值都将设置为等效的 Textbox。但是当文本框的值改变时,绑定源不会更新。它仍然显示第一个值
例如,加载后我更改了文本框中的名字,然后单击保存按钮调用 saveRecord()。当我检查 (userBindingSource.DataSource as User) 时,它仍然包含第一个名字而没有任何更改。
public void SaveRecord()
{
int i = 0;
User user = userBindingSource.DataSource as User;
if (user.Id > 0)
user.State = State.Modified;
using (ECarServiceClient client = new ECarServiceClient())
{
i = client.SaveUser(user);
}
}
如何使绑定源自动更新?
【问题讨论】:
-
User.FirstName 属性是否有公共设置器?
-
@jnm2: 是的
-
啊,我猜到了。如果文本框绑定具有 DataSourceUpdateMode.OnValidation (默认值),并且您从在文本框中键入内容到单击“保存”按钮,则在文本框验证之前处理“保存”单击,这就是它更新 BindingSource 和 User 对象的原因。我认为解决方法是在 SaveRecord 的开头调用
this.Validate()。 -
@jnm2:没错。请将其发布为答案,以便我投票给你。
标签: c# .net visual-studio