【发布时间】:2012-09-27 06:28:32
【问题描述】:
我有一个工单的捕获表单,它有一个CustomerBindingSource 和一个WorksOrderBindingSource 控件。大多数编辑字段绑定到WorksOrderBindingSource,其中一个ComboBox 的列表绑定到CustomerBindingSource,其SelectedValue 绑定到WorksOrderBindingSource 中的CustomerId 字段。这都是非常常规和标准的,这里没有可笑的。
然后,我还有一些文本框字段,用于显示当前选定客户的属性,用于当前编辑的工作订单。我也将这些字段绑定到CustomerBindingSource。选择客户后,这些字段会按预期显示该客户的属性。
我的问题是当我想使用表单来捕获新的工作订单时。我用CustomerId == null 实例化一个新的WorksOrder 对象并将其绑定到WorksOrderBindingSource。我在CustomerBindingSource 中没有带有Id == null 的对象,因此,正如预期的那样,下拉组合框是空白的,但是CustomerBindingSource.Current 属性指向该数据源中的第一个客户对象。客户链接显示字段显示该客户的值,但尚未选择客户。
对我来说显而易见的唯一解决方法似乎很笨拙。在其中,我有两个客户类型的绑定源,一个用于选定的客户,用于填充客户显示字段,另一个仅用于填充客户下拉列表。然后,我必须处理选择事件,只有选择客户,然后在显示字段的绑定源中找到该客户,如果未选择,则将显示字段的数据源设置为NULL。这感觉非常笨拙。还有其他方法可以实现我想要的吗?
【问题讨论】:
-
为什么不向绑定源添加“please-select-a-customer”项?
-
如何强制用户保存当前编辑,以便将有效的 CustomerID 分配给您的 NewRow
标签: winforms data-binding bindingsource