将单个对象的字段和值绑定到垂直Winform的两列数据网格

时间:2014-11-16 06:44:32

标签: c# winforms reflection datagridview

我有一个模型类如下。

public class EmployeeModel
{
    public string Name { get; set; }
    public int Age { get; set; }
    public double Salary { get; set; }
}

我希望它的字段和值映射到WinForm DataGridView,如下所示。

enter image description here

我采用了反思策略,如下所示。

EmployeeModel emp = new EmployeeModel();
emp.Name = "Dev";
emp.Age = 25;
emp.Salary = 150000;

PropertyInfo[] props = typeof(EmployeeModel).GetProperties();
foreach (PropertyInfo prop in props)
{                
    object val = prop.GetValue(emp, null);
    dataGridView1.Rows.Add(prop.Name, val);          
}

现在我可能需要循环列并进行一些反射以将这些值转换为EmployeeModel对象。我觉得我走错了路。

我有两个问题。

  1. 以这种方式将类对象绑定到DataGridView的最佳方法是什么?
  2. 假设我的类包含一个字段(例如,等级(整数))。需要将此字段值填充为数据网格内的组合框,其值为"经理,开发人员,CEO"在这种情况下需要做什么?

1 个答案:

答案 0 :(得分:2)

为此目的使用PropertyGrid

EmployeeModel emp = new EmployeeModel();
emp.Name = "Dev";
emp.Age = 25;
emp.Salary = 150000;

如果您要通过设计师将PropertyGrid添加到表单中, 然后将您的对象设置为SelectedObject,控件将处理其余的

this.MyPropertygrid.Text = "Employee";
this.MyPropertyGrid.SelectedObject = emp;