0

我有一个 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。无论我做什么,值都会变回表单打开时的值!有任何想法吗?

4

1 回答 1

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

我希望这个能帮上忙 :)

于 2012-09-12T07:28:56.807 回答