我正在尝试设置DataGridView来表示地图册中的页面。网格中的每个单元格表示一个MapGrid对象。用户可以使用它来设置MapGrids的路由。
public class MapGrid
{
public int ID { get; set; }
public short PageNumber { get; set; }
public char ColumnNumber { get; set; }
public byte RowNumber { get; set; }
public RouteSummary Route { get; set; }
}
public class RouteSummary
{
public int ID { get; set; }
public byte RouteNumber { get; set; }
}
我想知道我是否可以使用数据绑定将我的MapGrid对象列表绑定到网格。我想做这样的事情:
List<MapGrid> mapGrids = GetMapGrids();
dataGridView.DataSource = mapGrids;
我希望dataGridView显示MapGrid.RouteSummary.RouteNumber
属性。
我想也许我可以创建一个ILookup<byte, MapGrid>
来按行对MapGrids进行分组。那么也许我可以将它绑定到DataGridView。我不知道如何告诉它显示RouteNumber。
如果列数是常量,我可以简单地为每个列创建一个具有属性的对象,并将这些列的列表绑定到DataGridView。但当然事情并非那么简单。列数不是常数。所以我不明白这是怎么回事。
有什么想法吗?我是否试图做一些超出数据绑定范围的事情?现在我想我将不得不用我的MapGrid对象手动填充DataGridView并使用CellValueChanged
事件来更新内容。
答案 0 :(得分:2)
我得出的结论是,使用DataGridView.DataSource
属性无法完成我想要做的事情。最后,我使用for
循环手动将列和行添加到DataGridView
。
答案 1 :(得分:0)
为什么要额外上课呢?也可以将MapGrid定义为
public class MapGrid
{
public int ID { get; set; }
public short PageNumber { get; set; }
public char ColumnNumber { get; set; }
public byte RowNumber { get; set; }
public int RouteID { get; set; }
public byte RouteNumber { get; set; }
}
然后,您可以根据需要使用简单绑定。