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

Alt*_*tex 3 c# datagridview

我正在使用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();
Run Code Online (Sandbox Code Playgroud)

如果我为author1单击"加载数据",然后再单击"author2",然后再单击"author1",则说明DataGridView的外观的简化版本:

------------------------
| author1 |  bookONE   |
------------------------
| author1 |  bookTWO   |
------------------------
| author2 |   bookA    |
------------------------
| author1 |  bookONE   |
------------------------
| author1 |  bookTWO   |
------------------------
Run Code Online (Sandbox Code Playgroud)

我可以在查询之前添加一段代码来清除DataGridView中的所有先前数据吗?

ABH*_*ABH 5

你有没有尝试过table_dataGridView.DataSource = nulltable_dataGridView.Rows.Clear()在添加新行之前?

由于您table_dataGridView已绑定到DataSource,因此应删除用于删除现有行的正确代码;

if (table_dataGridView.DataSource != null)
{
     table_dataGridView.DataSource = null;
}
else
{
    table_dataGridView.Rows.Clear();
}
Run Code Online (Sandbox Code Playgroud)