2013-04-04 107 views
0

這看起來很簡單,但我無法弄清楚如何實現它。我不是C#中Databinding的專家。如何將數據源設置爲C#中的Datagridview控件#

我有類對象(這是一個嵌套類),它看起來像這樣的列表:

public class IntVector 
{ 
    private string customerid; 
    private string hash_id; 
    private string client_name; 
    private string mobile_no; 
    private string address; 

    //Table 

    private List<CustomerInfo> customerinfo; 
} 

我有IntVector

private List<IntVector> UserData; 

現在列表如何設置CustomerInfo爲作爲列表UserData成員的DatagridView控件的數據源。

感謝

+2

http://stackoverflow.com/questions/1228539/how-to-bind-list-to-datagridview – phadaphunk 2013-04-04 12:35:37

+0

我很抱歉,我不明白的帖子和解決方案。你能否詳細說明一下?謝謝 – Kiran 2013-04-04 12:48:51

回答

3

首先,你必須以某種方式暴露你的customerinfo列表(現在是私人的,所以你不能從你的intVector的類的外部得到它)。

如果它是市民:

BindingSource bs = new BindingSource(); 

int indexInUserDataList = 0; 
bs.DataSource = UserData[indexInUserDataList].customerinfo; 

datagridview.DataSource = bs; 

此外,你可能想,如果你想通過程序修改列表,並希望這些更改傳播到控制(這裏的差異考慮使用,而不是名單的BindingList解釋爲List<T> vs BindingList<T> Advantages/DisAdvantages

你的CustomerInfo類是什麼樣的?我想你想的DataGridView的列綁定到CustomerInfo類的公共屬性,exsample:

class CustomerInfo 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
    public string Address {get;set;} 

    private string somePrivateData; 
} 

現在,如果你的DataGridView的AutoGenerateColumns設置爲true,那麼3列「ID」,「名稱」和「地址「將自動在你的DataGridView中創建。 「somePrivateData」將被忽略。

如果你想自己定義collumns,你可以做這樣的:

// make sure to do it before binding DataGridView control 
datagridview.AutoGenerateColumns = false; 

DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn(); 
col1.DataPropertyName = "Name"; 
col1.HeaderText = "Customer name"; 
col1.Name = "column_Address"; 
datagridview.Columns.Add(col1); 

DataGridViewTextBoxColumn col2 = new DataGridViewTextBoxColumn(); 
col2.DataPropertyName = "Address"; 
col2.HeaderText = "Address"; 
col2.Name = "column_Name"; 
datagridview.Columns.Add(col2); 
+0

太棒了。非常感謝您的時間。我將嘗試實施這些更改。謝謝 – Kiran 2013-04-04 13:19:36

0

您需要設置客戶的私人列表爲市民:

public class IntVector 
{ 
    private string customerid; 
    private string hash_id; 
    private string client_name; 
    private string mobile_no; 
    private string address; 

    //Table 

    public List<CustomerInfo> customerinfo; 

}

private List<IntVector> UserData; 

//Populate the UserData list here 

然後,您可以將數據源設置爲DataGridView,例如:

DataGridView.DataSource = UserData[0].customerinfo; 

我希望幫助...

相關問題