Vb.net 管理绑定组合框中的可空值
我有一个名为Agent的BO和另一个名为AgentList的BO,其定义如下:Vb.net 管理绑定组合框中的可空值,vb.net,data-binding,combobox,datasource,nullable,Vb.net,Data Binding,Combobox,Datasource,Nullable,我有一个名为Agent的BO和另一个名为AgentList的BO,其定义如下: Inherits ComponentModel.BindingList(Of Agent) 代理列表包含一个名为CreateAgentList的方法,该方法返回从DB填充的AgentList对象 要填充组合框并绑定它,我使用以下代码: cmbAgent.DataSource = AgenteList.CreateAgentList() cmbAgent.DisplayMember = "Agen
Inherits ComponentModel.BindingList(Of Agent)
代理列表包含一个名为CreateAgentList的方法,该方法返回从DB填充的AgentList对象
要填充组合框并绑定它,我使用以下代码:
cmbAgent.DataSource = AgenteList.CreateAgentList()
cmbAgent.DisplayMember = "AgentCode"
cmbAgent.ValueMember = "Id"
cmbAgent.DataBindings.Add(New Binding("ValueMember", AgenteBindingSource,
"AgenteDiRiferimento", False, DataSourceUpdateMode.OnPropertyChanged))
如何使组合框中的无文本第一项与空值成员关联
注意:目的是让用户不选择任何代理。DB中的ReferenceAgent字段是代理表中可为空的整数FK。每次用户浏览代理列表时,绑定用于显示正确的代理,并且程序以表单的形式加载所选代理的数据。除了在DB的代理字段中存储空值之外,我刚刚删除了FK,该FK不是必须的,是已驱动的组合框的输入,并且不允许用户输入错误info并将空id替换为0我的id字段是一个从1开始的标识,因此这样做没有问题 填充我的combobox并在表单加载期间绑定它的代码如下:
Dim cmb_Items As New Dictionary(Of Integer, String)
cmb_Items.Add(0, "")
For Each item As Agent In AgentList.CreateAgentList()
cmb_Items.Add(item.Id, item.AgentCode)
Next
cmbAgent.DataSource = New BindingSource(cmb_Items, Nothing)
cmbAgent.ValueMember = "Key"
cmbAgent.DisplayMember = "Value"
cmbAgent.DataBindings.Add(New Binding("SelectedValue", AgentBindingSource, "Agent", False, DataSourceUpdateMode.OnPropertyChanged))
这不完全是我最初想到的解决方案,但它像一个符咒一样有效