2011-06-20 158 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.....) 
}