如果我有两个对象,即Fruit’和Color`,它们的定义如下:
public class Fruit { public int FruitId { get; set; } public string Name { get; set; } public Color Color { get; set; } } public class Color { public int ColorId { get; set; } public string Name { get; set; } }
如何将Fruit的集合(例如List< Fruit>)绑定到DataGridView?结果输出将类似于以下内容:
+-----+--------+----------+ | Id | Name | Color | +-----+--------+----------+ | 10 | Apple | Red | | 20 | Orange | Orange | | 30 | Grapes | Violet | +-----+--------+----------+
而不是像下面的输出:(注意:N.Color中的N表示对象Color的命名空间)
+-----+--------+------------+ | Id | Name | Color | +-----+--------+------------+ | 10 | Apple | N.Color | | 20 | Orange | N.Color | | 30 | Grapes | N.Color | +-----+--------+------------+
解决方法
你有多种选择.
您可以在Color类中重写ToString方法以返回Name,如:
public class Color { public int ColorId { get; set; } public string Name { get; set; } public override string ToString() { return Name; } }
或者代替分配List< Fruit>作为DataSource,您可以选择匿名对象列表,并在结果中选择“颜色名称”,如:
var result = yourlistofFruit .Select(r => new { FruitID = r.FruitId,Name = r.Name,Color = r.Color.Name,}).ToList(); dataGridView1.DataSource = result;