【问题标题】:Add a row in a DataGridView bounded to a database in C#在 C# 中绑定到数据库的 DataGridView 中添加一行
【发布时间】:2011-07-07 11:58:33
【问题描述】:

我有一个绑定到 SLQ Server CE 数据库表的 DataGridView。

我创建了一个“添加”按钮,当按下该按钮时,我想向 DataGridView 添加一个新行,以允许用户将新数据插入 DataGridView。

我还希望一旦用户在这个新行中完成输入,数据就会被持久化到有界数据库中。

我试过了:

dataGridView1.Rows.Add();

在按钮单击事件中以插入新行,但我收到以下错误消息:

当控件绑定数据时,无法以编程方式将行添加到 DataGridView 的行集合中

有什么建议吗?

【问题讨论】:

    标签: c# .net visual-studio-2010 datagridview


    【解决方案1】:

    您必须将该行添加到 DataTable 或您用于连接 SQL 和 DataGridView 的任何对象(换句话说,您设置 dataGridView1.DataSource 等于的对象)。

    例如:

    // set DataSource
    dataGridView1.DataSource = dataTable1;
    
    // add row
    dataTable1.Rows.Add();
    

    如果你不想自己控制添加,你可以按照@InBetween 所说的将dataGridView1.AllowUserToAddRows 设置为true。

    【讨论】:

    • DataGridView.AllowUserToAddRows 已设置为 true。我使用 Table Adapter 作为 DataGridView 和数据库之间的接口,但是方法 myTableAdapter.Rows.Add();不存在,如果我将该方法与 DataViewGrid 一起使用,它会给我之前发布的错误。
    • 你能贴出你用来连接两者的代码吗?
    • 希望你的意思是:this.animalsTableAdapter.Fill(this.animalsDataSet.Animals); 它用数据库表中的数据填充 DataGridView。
    • this.animalsDataSet.Animals 是一个 DataTable,所以 this.animalsDataSet.Animals.Rows.Add() 应该可以解决问题。
    【解决方案2】:

    您可以通过将DataGridView.AllowUserToAddRows 设置为true 来允许用户添加行。这将允许用户根据需要添加任意数量的新行并编辑字段的值。

    另一种选择是将新的“默认”行直接添加到DataGridView.DataSourceIListIListSource 对象)。这相当于让用户添加行,但它的优点是您可以控制添加的行数(例如,用户应该只被允许添加 1 行,在这种情况下,您可以将 AllowUserToAddRows 设置为false)。

    【讨论】:

    • AllowUserToAddRows 已经设置为 true,并且确实用户可以添加新行(当写入最后一行时,最后会出现一个新的空行)。但我想允许用户在单击“添加”按钮时添加新行。关于直接向DataGridView.DataSource添加一个新的默认行,它没有“添加”方法也没有类似的东西,你会怎么做?
    • @rfc1484:你的数据源是什么?
    猜你喜欢
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多