2017-04-01 89 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

相关问题