在按钮单击时在有界 dataGridView 中添加新行

Posted

技术标签:

【中文标题】在按钮单击时在有界 dataGridView 中添加新行【英文标题】:Add a new row in bounded dataGridView on button click 【发布时间】:2017-04-01 07:19:28 【问题描述】:

我有一个 datagridview 并使用 datatable 作为数据源来填充它。

我想在按钮单击时添加一个新行,使用方法首先取消绑定,然后在其中添加新行。如下:

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

但不是在现有行下方添加新行,而是清除行中的现有数据。我认为将该行呈现为新行。

如何在现有行下方添加新行并确保其他行中的数据安全。

注意——datagridview 视图的列是自定义列。

【问题讨论】:

【参考方案1】:

如果您需要保护现有行的安全,则必须保留数据源。请问可以试试下面的吗?

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);
    

【讨论】:

感谢@husky,但它的工作原理与 DGV1.Rows.add();一世。 e 清除 DGV 中已存在的数据。 清除发生在 dataGridView1.DataSource= null;您需要保留数据源并向表中添加新行,以保持现有行的安全。如果您能解释一下为什么需要解除数据源的绑定,那就太好了。 我只想在每次单击按钮时添加新行,我搜索了很多,发现新行是由未绑定的 datagridview 添加的。我真的不知道这样做会删除现有数据。没有其他理由解除 DGV 绑定。 只在绑定表中添加新行,可以查看更新后的代码吗?

以上是关于在按钮单击时在有界 dataGridView 中添加新行的主要内容,如果未能解决你的问题,请参考以下文章

用C#多条件查询,并把查询的条件显示在datagridview中

如何在 ios 中添加一组应在单击按钮时更改的图像? [关闭]

如何确保 MS Access 中的有界表单和子表单仅在单击按钮后提交到数据库?

在 React + Typescript 中的每个按钮单击事件上自动滚动到最后一个 div

如何在有界的python优化中找到全局最小值?

选择 datagridview其中的一行 然后在单击修改按钮 ,页面跳转