【发布时间】:2011-07-23 10:26:02
【问题描述】:
我有 2 个对象。 1) 输入用户,其属性为姓名、姓氏、电子邮件和角色
现在 Role 是一个属性类型 Role,它的属性是 RoleID 和 RoleName。
我希望将 User 对象与数据网格绑定,由于 [Role] 不是字符串类型,如何在网格中显示角色名称?
【问题讨论】:
-
检查这个:tinyurl.com/4r2ggp2
我有 2 个对象。 1) 输入用户,其属性为姓名、姓氏、电子邮件和角色
现在 Role 是一个属性类型 Role,它的属性是 RoleID 和 RoleName。
我希望将 User 对象与数据网格绑定,由于 [Role] 不是字符串类型,如何在网格中显示角色名称?
【问题讨论】:
我为你做了一个示例代码。我希望它会有所帮助。 我使用了一个 Linq 来设置绑定源:
public partial class Form1 : Form
{
DataGridView dgv;
BindingList<User> bList;
public Form1()
{
InitializeComponent();
dgv = new DataGridView();
dgv.Location = new Point(20, 20);
dgv.Size = new Size(600, 200);
this.Controls.Add(dgv);
PopulatingDGV();
}
private void PopulatingDGV()
{
bList = new BindingList<User>();
bList.Add(new User
{
Name = "John",
SureName = "Walker",
Email = "john@gmail.com",
_Role = new Role { RoleID = 1, RoleName = "Role No.1" }
});
bList.Add(new User
{
Name = "Sara",
SureName = "Johnson",
Email = "sj@yahoo.com",
_Role = new Role { RoleID = 2, RoleName = "Role No.2" }
});
//this:
//dgv.DataSource = new BindingSource { DataSource = bList.Select(s => new { s.Name, s.SureName, s.Email, s._Role.RoleID, s._Role.RoleName }) };
//that:
dgv.DataSource = bList.Select(s => new { s.Name, s.SureName, s.Email, s._Role.RoleID, s._Role.RoleName }).ToList();
dgv.Columns[0].HeaderText = "User`name";
dgv.Columns[1].HeaderText = "User`s last name";
dgv.Columns[2].HeaderText = "E - mail";
dgv.Columns[3].HeaderText = "Role id";
dgv.Columns[4].HeaderText = "Role name";
}
}
class User
{
public string Name { get; set; }
public string SureName { get; set; }
public string Email { get; set; }
public Role _Role { get; set; }
}
class Role
{
public int RoleID { get; set; }
public string RoleName { get; set; }
}
米加
【讨论】: