2012-04-12 2 views
3

Ich arbeite an einem kleinen Projekt von mir in C# und SQL Server und ich kann nicht herausfinden, wie die Zellen in einem DataGridView gelöscht werden, damit neue Daten die Zellen füllen können. Ich lade die Daten mit Argumenten wie einem Wert in einer Spalte. Zum Beispiel möchte ich alle Bücher für einen bestimmten Autor laden, und dann möchte ich alle Bücher für einen anderen Autor laden. Da das DataGridView nicht gelöscht ist, werden die Bücher des zweiten Autors nur unter die Zeilen der vorherigen Daten geladen und es geht so weiter.Wie wird DataGridView gelöscht, damit neue Daten die Zellen füllen können?

Ich möchte in der Lage sein, das DataGridView zu löschen, bevor die neuen Daten geladen werden, so dass es die einzigen Daten sein können, die ich sehe, wenn ich auf meine so genannte Schaltfläche "Daten laden" klicke.

Im Moment ist es das, was wie mein Code sieht mehr oder weniger:

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

Eine vereinfachte Version, wie das Datagridview aussieht, wenn ich „Daten laden“ für author1 und dann für author2 angeklickt und dann für author1 wieder:

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

gibt es ein Stück Code, den ich vor der Abfrage hinzufügen, die alle bisherigen Daten im Datagridview gefunden gelöscht werden?

Antwort

5

Haben Sie versucht, table_dataGridView.DataSource = null und table_dataGridView.Rows.Clear() vor dem Hinzufügen neuer Zeilen?

Da Ihre table_dataGridView an eine DataSource gebunden ist, sollte der richtige Code zum Entfernen vorhandener Zeilen sein;

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

Der 'DataSet.Clear();' Vorschlag funktionierte für mich. Vielen Dank für Ihre Eingabe. – Alternatex

+0

@ user1200185 Großartig :) – ABH

1

Warum nicht Sie versuchen, die Datasource als null wie table_dataGridView.DataSource Einstellung = null

+0

Das funktioniert nicht. Aber der 'DataSet.Clear();' - Vorschlag hat funktioniert. – Alternatex

+0

gut ... froh zu wissen, dass der Vorschlag von Hamad für Sie funktioniert – shanish

1

Der Code Sie die bisherigen Daten aus dem DataGridView löschen versehen sollte und es mit den neuen Daten zu ersetzen.
Das Problem könnte sein, dass Sie die Zeilen an Ihre DataTable anhängen. Können Sie überprüfen, ob ds1.Tables["table"] nur die Daten enthält, die Sie benötigen? Diese

2

arbeitete für mich

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

0

auf Ereignis klicken

BindingSource.AddNew() hinzufügen;

Verwandte Themen