2012-04-12 12 views
3

私はC#とSQL Serverの小さなプロジェクトに取り組んでおり、DataGridViewのセルをクリアして新しいデータでセルを埋める方法を見つけられません。列の値などの引数を使用してデータをロードしています。たとえば、ある著者のすべての書籍を読み込み、別の著者のためにすべての書籍を読み込みたいとします。 DataGridViewはクリアされていないので、2番目の著者の書籍は前のデータの行の下にロードされ、これはこのように続きます。新しいデータがセルを埋めるように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ため、その後のための場合のDataGridViewがどのように見えるかの簡易版再びauthor1:

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

私はDataGridViewので見つかった以前のすべてのデータが消去されますクエリの前に追加できるコードの部分はありますか?

答えて

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(); 
} 
+0

「DataSet.Clear();」という提案が私のために働いていました。しかし、あなたの入力をありがとう。 – Alternatex

+0

@ user1200185素晴らしい:) – ABH

1

なぜあなたはtable_dataGridView.DataSource = nullを

+0

それは動作しません。しかし、 'DataSet.Clear();'の提案はうまくいきました。 – Alternatex

+0

良い...ハマドの提案があなたのために働いたことを知ってうれしい – shanish

1

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

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

保護のボイドClear_Click1のために働いていた(オブジェクト送信者、EventArgsのe)の { dt.Clear(); GridView1.DataSource = dt; GridView1.DataBind(); }

0

イベントに

BindingSource.AddNew()を追加しますクリックしてください。

関連する問題