立即向 Datagridview 添加行

Posted

技术标签:

【中文标题】立即向 Datagridview 添加行【英文标题】:Add lines to Datagridview immediately 【发布时间】:2021-04-10 14:40:45 【问题描述】:

我有一个 DatagridView,我想向它添加新行。新行应立即出现在 GUI 中。

private void button1_Click(object sender, EventArgs e)
               
    dataGridView1.DataSource = Class1.ds.Tables[0];
    String str = "INSERT INTO workers(Worker_Id," +
        "Salary, Work_Hours, Worker_Tel, Worker_Name) " + 
        "VALUES('" + Worker_Id_TB.Text + "','" + 
        int.Parse(Salary_TB.Text) + "','" + 
        int.Parse(Work_Hours_TB.Text) + "','" + Tel_TB.Text + "','" +  
        Worker_Name_TB.Text + "')";
    Class1.GetDataSet(str);

【问题讨论】:

你能告诉我们你到目前为止做了什么吗? 请提供更详细的代码示例,说明您目前拥有的代码示例。有很多方法可以做到这一点,这一切都取决于到目前为止您所拥有的代码示例,以了解哪种方式可以处理您的代码。 现在为您编辑 MS Documentation 网站上有很多很棒的文章,介绍了数据提供者工具的工作原理(没有一篇会显示将数据粘合到字符串中以进行查询)。 向数据表添加 3 行。代码中的 INSERT 查询 a) 无关紧要,并且 b) 容易受到 SQL 注入黑客攻击。阅读bobby-tables.com 【参考方案1】:

如果您的 Class1 代码正常工作,您可以尝试将 BindingSource 控件添加到包含 DataGridView 的 Windows 窗体。那么,

   bindingSource1.DataSource = Class1.ds.Tables[0];
   
   dataGridView1.DataSource = bindingSource1;

   String str = "INSERT INTO ...  ";

   Class1.GetDataSet(str);  [before executing the sql command in this code, you should probably do "bindingSource1.EndEdit()"]

如果您的 Class1 代码仍未在 DGV 中生成所需的新数据,您可以考虑创建和使用 Fill() 或 InsertQuery() sql 查询,这些查询可以在设计模式下在 DataSet.DataTable 的 DataTableAdapter 中定义。此外,学习以编程方式创建新 DataRow 对象并将其添加到 DataTable 可能会有所帮助。 如果 DGV 数据绑定正确,那么更新数据表也应该更新 dataGridView。

如果您需要更多帮助,请向我们展示 Class1 代码。

【讨论】:

以上是关于立即向 Datagridview 添加行的主要内容,如果未能解决你的问题,请参考以下文章

如何向datagridview添加行

不能向没有列的 DataGridView 控件添加行.必须首先添加列.

vb.net datagridview 无法添加行

当控件被数据绑定时,无法以编程方式向DatagridView的行集合中添加行,怎么解决?

C# winform程序中如何向datagridview中添加一行

C#Winform中DataGridView往某一行新增数据