Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 管理绑定组合框中的可空值_Vb.net_Data Binding_Combobox_Datasource_Nullable - Fatal编程技术网

Vb.net 管理绑定组合框中的可空值

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

我有一个名为Agent的BO和另一个名为AgentList的BO,其定义如下:

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))
这不完全是我最初想到的解决方案,但它像一个符咒一样有效