2013-04-17 47 views
1

我有一個usercontrol datagridview。我創建了一個數據表,並將datagrid的源設置爲這個數據表。我希望在運行時能夠在點擊每個按鈕時在gridview上添加多少行。在每個按鈕單擊添加行datagridview

我的代碼:

private DataTable CreateTable() 
    { 
     Datatable table=new Datatable(); 
     table.Columns.Add("Name".ToString()); 
     table.Columns.Add("Size".ToString()); 
     DataRow dr = table.NewRow(); 
     dr["Name"] = "Mike"; 
     DataRow dr2 = table.NewRow(); 
     dr2["Name"] = "Ryan; 
     DataRow dr3 = table.NewRow(); 
     dr3["Name"] = "Taylor"; 
     dr["Size"] = " one"; 
     dr2["Size"] = "two"; 
     table.Rows.Add(dr); 
     table.Rows.Add(dr2); 
     table.Rows.Add(dr3); 
     return table; 
    //and on my constructor I set gridview.DataSource=Datatable; 
    } 

//Code on the event: 
private void button_Click(object sender, EventArgs e) 
    { 

     DataRow NewRow = table.NewRow(); 
     table.Rows.Add(NewRow); 
    } 

回答

3

你必須在形式層面來定義DataTable。然後在點擊鏈接,你可以這樣做:

private void button_Click(object sender, EventArgs e) 
{ 
    DataRow NewRow = table.NewRow(); 
    table.Rows.Add(NewRow); 
    gridview.DataSource=table; //specify the source 
} 

對於在形式層面定義表:

DataTable table; //DataTable at form level 

private DataTable CreateTable() 
{ 
    table=new Datatable(); //here insntianting the form level table. 
    table.Columns.Add("Name".ToString()); 
    table.Columns.Add("Size".ToString()); 
    DataRow dr = table.NewRow(); 
    dr["Name"] = "Mike"; 
    DataRow dr2 = table.NewRow(); 
    dr2["Name"] = "Ryan; 
    DataRow dr3 = table.NewRow(); 
    dr3["Name"] = "Taylor"; 
    dr["Size"] = " one"; 
    dr2["Size"] = "two"; 
    table.Rows.Add(dr); 
    table.Rows.Add(dr2); 
    table.Rows.Add(dr3); 
    return table; 
//and on my constructor I set gridview.DataSource=Datatable; 
} 
+0

非常感謝!它完美的工作! – Viva

+1

@Mady,歡迎您:) – Habib

1

我建議以下辦法更好地處理。

創建通用列表,爲每次點擊添加新的數據集列表,然後將該列表轉換爲DataTable,如下面的鏈接中所述,然後將DataTable綁定到網格。

Convert generic List/Enumerable to DataTable?

如果你想示例代碼,請讓我知道。

相關問題