给出绑定导航器的表主表:
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?
答案 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);
你应该看到你想要的结果。