【发布时间】:2012-09-12 05:35:05
【问题描述】:
我有一个 Employee 对象,它有一个就业状态 ID (int) 字段。
我有一个从就业状态枚举中填充并绑定到 Form_Load 中的字段的组合框:
List<LookupListItem> EmpStatuses = new List<LookupListItem>();
foreach (EmploymentStatuses m in Enum.GetValues(typeof(EmploymentStatuses)))
{
EmpStatuses.Add(new LookupListItem((int)m, m.ToString()));
}
cboStatus.DataSource = EmpStatuses; // Enum.GetValues(typeof(CommonLibrary.Lookups.EmploymentStatuses));
cboStatus.ValueMember = "ItemValue";
cboStatus.DisplayMember = "ItemDesc";
cboStatus.DataBindings.Add("SelectedValue", _presenter.SelectedOfficer, "EmploymentStatusID");
当表单出现时,组合框中会显示正确的值,但如果用户更改了该值,则会在组合框失去焦点时将其设置回来!
文本框和简单的组合框(即带有字符串集合的组合框)在同一个表单上都可以。
您可以看到我最初尝试仅在枚举上使用 GetValues,但我将其更改为列表以查看是否有帮助。我试过使用 BindingList,我试过在绑定上使用 DataSourceUpdateMode.OnValidation。我什至尝试在 selectedindexchanged 事件上使用 cboStatus.DataBindings[0].WriteValue。无论我做什么,值都会变回表单打开时的值!有什么想法吗?
【问题讨论】:
-
我知道这是旧的,但我自己也有类似的问题。你有没有在保持绑定的同时解决这个问题?
-
对不起,我最终放弃了愚蠢的绑定并自己编码:(