3

我正在使用 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 中找到的所有以前的数据吗?

4

6 回答 6

5

您是否尝试过table_dataGridView.DataSource = nulltable_dataGridView.Rows.Clear()在添加新行之前?

由于您table_dataGridView绑定到数据源,因此删除现有行的正确代码应该是;

if (table_dataGridView.DataSource != null)
{
     table_dataGridView.DataSource = null;
}
else
{
    table_dataGridView.Rows.Clear();
}
于 2012-04-12T18:21:34.457 回答
5

数据集.清除();

http://msdn.microsoft.com/en-us/library/system.data.dataset.clear.aspx

于 2012-04-12T18:22:05.087 回答
2

这对我有用

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

protected void Clear_Click1(object sender, EventArgs e) { dt.Clear(); GridView1.DataSource = dt; GridView1.DataBind(); }

于 2013-11-14T04:39:35.987 回答
1

为什么不尝试将 DataSource 设置为 null,例如 table_dataGridView.DataSource=null

于 2012-04-12T18:22:03.650 回答
1

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

于 2012-04-12T18:23:00.577 回答
0

在事件点击添加

BindingSource.AddNew();

于 2015-07-18T00:07:35.340 回答