2017-04-01 94 views
0

我有一個datagridview並使用datatable填充它作爲數據源。在有界的dataGridView上添加一個新行按鈕單擊

我想添加一個新的按鈕點擊行,使用方法先解除綁定,然後在其中添加新行。如下所示:

dataGridView1.AutoGenerateColumns = false; 
dataGridView1.DataSource= null; 
dataGridView1.Rows.Add(); 

但是,而不是增加現有行之下新行,它會清除行現有的數據。我認爲那一排是新的一排。

如何在現有行下添加新行並將其他行中的數據保持安全。

注 - datagridview視圖的列是自定義列。

回答

0

如果您需要保持現有的行安全,您必須保留數據源。請嘗試下面的內容?

public partial class Form1 : Form 
{ 
    DataTable dt; 

    public Form1() 
    { 
     InitializeComponent(); 

     InitDataGridView(); 
    } 

    private void InitDataGridView() 
    { 
     dt = new DataTable(); 

     dt.Columns.Add("A"); dt.Columns.Add("B"); 

     var dr = dt.NewRow(); 

     dr["A"] = "A-init"; dr["B"] = "B-init"; 

     dt.Rows.Add(dr); 

     dataGridView1.DataSource = dt; 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     var dr = dt.NewRow(); 

     var counter = dt.Rows.Count; 

     dr["A"] = "A-" + counter; dr["B"] = "B-" + counter; 

     dt.Rows.Add(dr); 
    } 
} 
+0

謝謝@husky,但它的工作原理與DGV1.Rows.add();一世。 e清除DGV中已經退出的數據。 – speedyraz

+1

清算髮生在dataGridView1.DataSource = null;您需要保留數據源並將新行添加到表中,以保持安全的現有行。如果你解釋爲什麼你需要解除綁定數據源的想法會很棒。 – husky

+0

我只想每次點擊按鈕時添加新行,我搜索了很多,發現通過未綁定的datagridview添加了新行。我真的不知道這樣做會刪除現有的數據。沒有其他理由來解除DGV。 – speedyraz

相關問題