我有一个Employee对象,它有一个EmploymentStatusID(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。无论我做什么,价值都会变回表格打开时的状态!有什么想法吗?
答案 0 :(得分:0)
我修改了你的代码
List<LookupListItem> EmpStatuses = new List<LookupListItem>();
foreach (EmploymentStatuses m in Enum.GetValues(typeof(EmploymentStatuses)))
{
EmpStatuses.Add(new LookupListItem((int)m, m.ToString()));
}
EmpStatuses.Add(new LookupListItem(<selectedValue>, "SomeText")); //<- my modified code
cboStatus.DataSource = EmpStatuses; // Enum.GetValues(typeof(CommonLibrary.Lookups.EmploymentStatuses));
cboStatus.ValueMember = "ItemValue";
cboStatus.DisplayMember = "ItemDesc";
// Remove this part cboStatus.DataBindings.Add("SelectedValue", _presenter.SelectedOfficer, "EmploymentStatusID");
cboStatus.SelectedValue = <selectedValue> //<- my modified code
我希望这会有所帮助:)