【问题标题】:How can I force a TextBox's DataSource to update after a change in value through code?如何在通过代码更改值后强制 TextBox 的 DataSource 更新?
【发布时间】:2014-01-10 16:46:01
【问题描述】:

我将TextBoxtext 属性绑定到DataTable 中的字段值,如下所示:

With control.Item_Full_Description
     .DataBindings.Add("Text", mdtItemMstr, "Item_Full_Description", True)
End With

当我手动更改TextBox 时,它们会在数据源中检测和更新,因此保存到数据库是准确的。但是,如果我在幕后进行更改,则数据源不会更新,并且保存到数据库会导致旧值被保存回来。以下是我在代码中更新TextBox 的方式:

Item_Full_Description.Text = _mItem_mstr_c + " - " + Item_Description.Text + " - " + Unit_of_Measurement_UOM.Text

我显然错过了将这种变化反映在数据源中的基本步骤,但是在线搜索并没有被证明是有用的。也许我只是不确定要搜索什么,所以任何建议甚至指导都会受到赞赏。谢谢。

【问题讨论】:

    标签: vb.net data-binding controls datasource


    【解决方案1】:

    由于您是从代码更新控件,因此您需要强制更新绑定源。

    查看 BindingContext 类... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.bindingcontext%28v=vs.110%29.aspx

    BindingContext([data source]).EndCurrentEdit()
    

    【讨论】:

    • 太好了,谢谢。对您的后续问题 - 在一次保存之前一遍又一遍地在文本更改事件中调用它是否安全?似乎在接受更改之前应该只调用一次,但我不确定。
    • 理想情况下,您只想在进行所有更改后调用一次,以防止任何冲突并出于性能原因。
    猜你喜欢
    • 2017-03-11
    • 2018-03-09
    • 2017-05-23
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    相关资源
    最近更新 更多