如何使用BindingSource在数据网格视图中显示对象中的多列

本文关键字:显示 对象 视图 网格 BindingSource 何使用 数据 数据网 | 更新日期: 2023-09-27 18:26:53

我有一个想要在数据网格视图中显示的对象。对象(移动)有一个名称、一个权重,然后是一些"位置"对象。每个位置都有一个名称和一个值。我想做的是,每个动作都在DGV的各自栏中显示名称、重量、位置1.name、位置1.value、位置2.name、位置2.value。

我已经成功地覆盖了Location的toString方法,但这只给了我每个Location一列,我真的希望能够有两列。有办法做到这一点吗?我目前正在使用类似的BindingSource

BindingSource movementSource = new BindingSource();
movementsSource.DataSource = aircraft.movements;
MovementDataGridView.DataSource = movementsSource;

如果有任何不同,则移动为List<Movement>

谢谢!

如何使用BindingSource在数据网格视图中显示对象中的多列

我所做的是创建一个像这样的包装类:

class MovementView {
   private Movement movement;
   public MovementView(Movement m) { movement = m; }
   public string Name { get { return movement.Name; } }
   // etc..
   public string Location1Name { get { return movement.Locations[0].Name; } }
   // etc..
}

然后将网格绑定到List<MovementView>

movementsSource.DataSource = aircraft.movements
    .Select(t => new MovementView(t))
    .ToList();