3

私は C# と SQL Server で私の小さなプロジェクトに取り組んでいますが、DataGridView のセルをクリアして新しいデータでセルを埋める方法がわかりません。列の値などの引数を使用してデータをロードしています。たとえば、特定の著者のすべての本をロードしてから、別の著者のすべての本をロードしたいとします。DataGridView がクリアされていないため、前のデータの行の下に 2 番目の著者の本が読み込まれるだけで、このように続きます。

新しいデータが読み込まれる前に 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 = nullましたか?table_dataGridView.Rows.Clear()

あなたtable_dataGridViewは DataSource にバインドされているため、既存の行を削除するための適切なコードは次のようになります。

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

DataSet.Clear();

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

于 2012-04-12T18:22:05.087 に答える
1

table_dataGridView.DataSource=null のように DataSource を null として設定しようとしないのはなぜですか

于 2012-04-12T18:22:03.650 に答える
1

あなたが提供したコードは、以前のデータを から消去DataGridViewし、新しいデータに置き換える必要があります。
問題は、行をDataTable. 必要なデータだけが含まれているかどうかを確認できますds1.Tables["table"]か?

于 2012-04-12T18:23:00.577 に答える