2011-06-20 120 views
3

我有两个静态列表,是有两个按钮字段一起绑定到一个DataGridView。我只能绑定一个列表和一个按钮字段。是否有可能不止一个列表绑定到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以及两个按钮结合每行启动或停止相应的服务。

回答

4

开箱没有支持数据的约束DataGridView和两个列表。我可以看到可用的两个主要选择,您:

  1. 放弃绑定 - 你并不需要一个列表设置为DataGridView DataSource财产和依靠数据绑定使一切工作正常。相反,你可以在绑定模式下工作,并编写代码来移动数据传回,并转发自己。看看这个简单的例子MSDN

  2. 创建自定义对象 - 如果你想数据绑定,您可以创建一些对象,它结合了两个列表的方便,然后绑定到。如果你只想要一个双向数据绑定(没有更新的列表中的数据时,DataGridView变化),那么你甚至可以做这样一个简单的LINQ查询。否则,你可以编写某种自定义的对象,它充当一个包装在两个名单 - 如果设计得好,你应该能够有充分的双向数据在你的两个列表绑定。

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.....) 
}