将多个列表绑定到DataGridView

时间:2011-06-20 06:10:51

标签: c# winforms list datagridview .net-2.0

我有两个静态列表,它们绑定到DataGridView以及两个按钮字段。我只能绑定一个列表和一个按钮字段。是否可以将多个列表绑定到DataGridView

ServiceController objSAVAdminService = new ServiceController("SAVAdminService");
ServiceController objSAVService = new ServiceController("SAVService");
ServiceController objPPVService = new ServiceController("PPVService");
ServiceController objMLLService = new ServiceController("MLLService");

List<string> ServiceName = new List<string>();
List<string> ServiceStatus = new List<string>();

ServiceName.Add(objSAVService.ServiceName.ToString());
ServiceName.Add(objSAVAdminService.ServiceName.ToString());
ServiceName.Add(objPPVService.ServiceName.ToString());
ServiceName.Add(objMLLService.ServiceName.ToString());

ServiceStatus.Add( objSAVService.Status.ToString());
ServiceStatus.Add( objSAVAdminService.Status.ToString());
ServiceStatus.Add( objPPVService.Status.ToString());
ServiceStatus.Add( objMLLService.Status.ToString());

我需要将这两个列表绑定到DataGridView以及每行上的两个按钮以启动或停止相应的服务。

2 个答案:

答案 0 :(得分:4)

开箱即用,不支持数据绑定DataGridView和两个列表。我可以看到两个主要选项:

  1. 放弃数据绑定 - 您不需要将列表设置为DataGridView DataSource属性,并依赖DataBinding来使所有内容正常工作。相反,您可以在未绑定模式下工作并编写代码以自行移回数据。请查看MSDN上的这个简单示例。

  2. 创建自定义对象 - 如果您希望方便数据绑定,可以创建一个组合这两个列表的对象,然后绑定到该对象。如果您只想要单向数据绑定(在DataGridView更改时不更新列表中的数据),那么您甚至可以使用一个简单的LINQ查询来执行此操作。否则,您可以编写某种自定义对象作为两个列表的包装器 - 如果您设计得很好,您应该可以在两个列表上进行完全双向数据绑定。

答案 1 :(得分:1)

还有另一种选择, 因为你正在使用2个字符串列表, 你可能会这样做

List<string> BindList = new List<string>();
BindList.AddRange(ServiceName);
BindList.AddRange(ServiceStatus);
foreach(string item in BindList)
{
Datagridview1.Rows.Add(item.objSAVService,item.objSAVAdminService.....)
}