为什么我的comboBox在选择值后变为空白?

时间:2009-09-07 23:32:41

标签: .net data-binding combobox

给出绑定导航器的表主表:

CREATE TABLE [dbo].[asset](
[assetID] [int] IDENTITY(1,1) primary key,
[assetTag] [varchar](15) NULL,
[assetModelId] [int] NOT NULL,
[employeeId] [int] NULL references employee(employeeid),
[LocationId] [int] NULL,
[purchasedDate] [smalldatetime] NULL,
[purchasedby] [int] NULL references employee(employeeid),
[depreciated] [tinyint] NULL,
[addedDate] [smalldatetime] NULL CONSTRAINT,
[addedBy] [int] NULL references employee(employeeid),
[disposalDate] [smalldatetime] NULL

这是bindingNavigator绑定:

bindingNavigator1.BindingSource = _formData.BsAssets; // binding source for the asset table(linq-to-sql dbml)

这是comboBox的绑定代码:

        _BsAsset.DataSource = _formData.GPS.dc.assets;
        _BsUser.DataSource = _formData.GPS.dc.employees;
        cmbUser.DisplayMember = "userName";
        cmbUser.ValueMember = "employeeId";
        cmbUser.DataSource = _BsUser;

        cmbUser.DataBindings.Add("SelectedValue", _BsAsset, "employeeId");

每次在组合框中选择一个值时,它都会保持...直到控件失去焦点,然后将其设置为空白(null)。

组合框设置为DropDown模式,以便用户可以直接从此comboBox在该表上添加新值。如果我输入值保持不变的值(我还没有输入任何代码来实现此功能)。

我使用相同的代码将组合框绑定到引用employee表的其他两个值,结果相同。 为什么在选择之后它会将其设置为null?

4 个答案:

答案 0 :(得分:0)

听起来每次失去焦点时都会重新加载下拉控件。页面在失去控件焦点时是否会回发?

答案 1 :(得分:0)

DisplayMember属性设置为userName,这在您的数据源中不存在。

答案 2 :(得分:0)

我发现了一件有趣的事情。当我转到组合框的属性,然后转到DataBindings / Advanced,并删除了Text条目时,突然组合框在失去焦点时停止了消隐。 可能值得一试。

答案 3 :(得分:0)

将组合框绑定到可空类型时,我有这种经验。我必须在Databindings.Add重载签名中包含formattingEnabled参数,设置为true。

来自msdn:

  

将此属性设置为true还可以启用错误处理行为   导致引发BindingComplete事件。

将您的数据绑定代码更改为:

cmbUser.DataBindings.Add("SelectedValue", _BsAsset, "employeeId", true);

你应该看到你想要的结果。