我想在我的comboBox顶部插入一个默认值。请告诉我一个正确的方法。
我尝试了什么
我的代码:
using (var salaryslipEntities = new salary_slipEntities())
{
Employee emp = new Employee();
cmbEmployeeName.DataSource = salaryslipEntities.Employees.ToList();
cmbEmployeeName.Items.Insert(0, "Select Employee");
}
错误
设置DataSource属性时无法修改项集合。
答案 0 :(得分:1)
您可以使用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; }
}