Ich habe derzeit eine Anwendung, die Sie nach einem bestimmten Speicherort, Besitzer, usw. suchen können, die einige grundlegende Informationen über das Gerät (e) zurückgibt. Ich habe diese Informationen über eine SQL-Abfrage abgerufen und in ein DataSet platziert, das dann in ein DataGridView-Objekt platziert wird. Ich versuche, eine Clear-Schaltfläche zu implementieren, die die Suchbegriffe sowie die Daten im DataGridView-Objekt entfernt.Löschen von DataGridView an DataSet gebunden, ohne Header zu verlieren VB.NET
Leider kann ich DataGridView.Rows.Clear()
nicht verwenden, da mein DataGridView an ein DataSet gebunden ist. Ich stehe in Schwierigkeiten mit DataGridView.DataSource = Nothing
, da dies nicht nur die Daten entfernt, die angezeigt wurde, sondern auch meine Kopfzeilen für Spalten, die ich für die DataGridView erstellt habe entfernt. Ich habe ein paar Lösungen ausprobiert, die ich gefunden habe, wie DataGridView.Refresh()
und DataGridView.AutoGenerateColumns = false
, aber diese haben bisher die Spaltenüberschriften entfernt.
Dies ist der Code, den ich zum Hinzufügen von Zeilen zum DataGridView-Objekt verwende;
Dim con As New SqlClient.SqlConnection(getConnectionString)
Dim cmd As New SqlCommand("SELECT asset.assetID, owner.ownerName, model.brand, asset.modelID, deviceOwner.serialNumber, deviceOwner.location, asset.dateAssessed from asset
join deviceOwner on asset.assetID = deviceOwner.assetID
join owner on deviceOwner.ownerID = owner.OwnerID
join model on asset.modelID = model.modelID where asset.dateAssessed = @checkDate", con)
cmd.Parameters.AddWithValue("@checkDate", searchEnterDate.Text.ToString)
con.Open()
Dim myDA As New SqlDataAdapter(cmd)
myDA.Fill(myDataSet, "MyTable")
displayResults.DataSource = myDataSet.Tables("MyTable").DefaultView
con.Close()
con = Nothing
ich nach einer Lösung suchen, die mir erlauben, die Zeilen aus der Datagridview zu löschen, ohne das Entfernen der Spaltenüberschriften, damit ich die Clear-Taste bei Bedarf können aber auch weiterhin mit Spaltenüberschriften noch die Anzeige suchen.
Wie wäre es ein zu schaffen DataTable mit nur den Spaltenüberschriften und weisen Sie es als Ihre DataSource, wenn Sie es "leeren" möchten? –
Wenn die Spaltenüberschriften gleich sind, bedeutet dies, dass die Abfrage im Wesentlichen die gleiche ist, nur gefiltert. Anstatt eine neue Abfrage auszuführen, können Sie versuchen, den 'DefaultView.RowFilter' zu verwenden. – Plutonix
Ich verwende eine DataView, die von der DataTable abgeleitet wurde, und setze den Filter nach Bedarf. – rheitzman