【问题标题】:Bindingsource won't update after the textbox Conrol updates文本框 Conrol 更新后,Bindingsource 不会更新
【发布时间】: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


【解决方案1】:

如果文本框绑定有DataSourceUpdateMode.OnValidation(默认值),并且您从输入文本框直接点击“保存”按钮,则在文本框验证之前处理“保存”点击。验证是使 BindingSource 更新 User 对象的原因。

解决方法是在 SaveRecord 的开头调用 this.Validate()。这会触发对当前表单及其所有祖先中的焦点控件的验证。

【讨论】:

    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多