在数据绑定组合框顶部插入自定义值

本文关键字:插入 自定义 顶部 数据绑定 组合 | 更新日期: 2023-09-27 18:24:04

我想在组合框的顶部插入一个默认值。请告诉我一个正确的方法。

我尝试了什么

我的代码:

 using (var salaryslipEntities = new salary_slipEntities())
            {
                    Employee emp = new Employee();
                      cmbEmployeeName.DataSource = salaryslipEntities.Employees.ToList();
                         cmbEmployeeName.Items.Insert(0, "Select Employee");
                          }

错误

设置DataSource属性时,无法修改项集合。

在数据绑定组合框顶部插入自定义值

您可以使用System.Reflection来完成此操作。请检查下面的代码示例。

编写一个添加默认项的通用方法。

 private void AddItem(IList list, Type type, string valueMember,string displayMember, string displayText)
    {
        //Creates an instance of the specified type 
        //using the constructor that best matches the specified parameters.
        Object obj = Activator.CreateInstance(type);
        // Gets the Display Property Information
        PropertyInfo displayProperty = type.GetProperty(displayMember);
        // Sets the required text into the display property
        displayProperty.SetValue(obj, displayText, null);
        // Gets the Value Property Information
        PropertyInfo valueProperty = type.GetProperty(valueMember);
        // Sets the required value into the value property
        valueProperty.SetValue(obj, -1, null);
        // Insert the new object on the list
        list.Insert(0, obj);
    }

然后用这样的方法。

List<Test> tests = new List<Test>();
        tests.Add(new Test { Id = 1, Name = "Name 1" });
        tests.Add(new Test { Id = 2, Name = "Name 2" });
        tests.Add(new Test { Id = 3, Name = "Name 3" });
        tests.Add(new Test { Id = 4, Name = "Name 4" });
        AddItem(tests, typeof(Test), "Id", "Name", "< Select Option >");
        comboBox1.DataSource = tests;
        comboBox1.ValueMember = "Id";
        comboBox1.DisplayMember = "Name";

我在代码中使用了这个测试类

public class Test
{
    public int Id { get; set; }
    public string Name { get; set; }
}