C# 如何清除DataGridView以便新数据可以填充单元格?

C# 如何清除DataGridView以便新数据可以填充单元格?,c#,datagridview,C#,Datagridview,我正在做一个C#和SQL Server的小项目,我想不出一种方法来清除DataGridView中的单元格,以便新数据可以填充这些单元格。我正在加载带有参数的数据,例如列中的值。例如,我想加载某个作者的所有书籍,然后加载另一个作者的所有书籍。由于DataGridView没有被清除,第二作者的书只是被加载到前面数据行的下面,并继续这样 我希望能够在加载新数据之前清除DataGridView,这样当我单击所谓的“加载数据”按钮时,它可以成为我看到的唯一数据 目前,我的代码大致是这样的: Sql

我正在做一个C#和SQL Server的小项目,我想不出一种方法来清除DataGridView中的单元格,以便新数据可以填充这些单元格。我正在加载带有参数的数据,例如列中的值。例如,我想加载某个作者的所有书籍,然后加载另一个作者的所有书籍。由于DataGridView没有被清除,第二作者的书只是被加载到前面数据行的下面,并继续这样

我希望能够在加载新数据之前清除DataGridView,这样当我单击所谓的“加载数据”按钮时,它可以成为我看到的唯一数据

目前,我的代码大致是这样的:

    SqlConnection connect;
    DataSet ds1 = new DataSet();
    SqlDataAdapter da;

    connect = new SqlConnection();
    connect.ConnectionString = "Data Source=THEPC-PC\\SQLExpress;Initial Catalog=TheDatabase;Integrated Security=True";
    string sql = "Select * from table WHERE author = 'BookAuthor'";
    da = new SqlDataAdapter(sql, connect);
    da.Fill(ds1, "table");
    table_dataGridView.AutoGenerateColumns = false;
    table_dataGridView.DataSource = ds1.Tables["table"];
    connect.Open();
    connect.Close();
如果我再次单击author1、author2和author1的“加载数据”,则DataGridView的外观将简化:

------------------------
| author1 |  bookONE   |
------------------------
| author1 |  bookTWO   |
------------------------
| author2 |   bookA    |
------------------------
| author1 |  bookONE   |
------------------------
| author1 |  bookTWO   |
------------------------

在查询之前,是否可以添加一段代码来删除DataGridView中以前找到的所有数据?

在添加新行之前,您是否尝试过
table\u DataGridView.DataSource=null
table\u DataGridView.Rows.Clear()

由于您的
表\u dataGridView
绑定到一个数据源,因此应该使用适当的代码删除现有行

if (table_dataGridView.DataSource != null)
{
     table_dataGridView.DataSource = null;
}
else
{
    table_dataGridView.Rows.Clear();
}

为什么不尝试像table_dataGridView.DataSource=null那样将数据源设置为null呢


您提供的代码应该从
DataGridView
中删除以前的数据,并将其替换为新数据。
问题可能是您将行附加到了
数据表中。您能检查一下ds1.Tables[“table”]
是否只包含您需要的数据吗?

这对我来说很有效

        cl.OpenCon();
        String data = "select ID,Name,Price from Items";
        SqlCommand ncmd = new SqlCommand(data);
        ncmd.Connection = cl.ReturnCon();
        SqlDataReader rs = ncmd.ExecuteReader();
        dt = new DataTable();
        dt.Load(rs);
        GridView1.DataSource = dt;
        GridView1.DataBind();
        cl.CloseCon();
受保护的无效清除\u单击1(对象发送者,事件参数e) { dt.Clear(); GridView1.DataSource=dt; GridView1.DataBind(); }

在事件上单击添加


BindingSource.AddNew()

那不行。但是
DataSet.Clear()建议有效。
DataSet.Clear()建议对我有效。谢谢你的意见。