In meinem ersten Versuch, DataGridView in einer nützlichen Anwendung zu verwenden, bin ich froh, dass ich viele nützliche Beiträge gefunden habe, die mir geholfen haben, eine rudimentäre & App zu erstellen . Meine DataGridView ist derzeit ein festes 4-Spalten-Raster, das Daten aus einer MySQL-Datenbank abfragt. Spalte 4 muss ein Hyperlink-Typ der Spalte sein. Wenn ich den folgenden Code zum ersten Mal ausführen, über eine Taste, die Ergebnisse sind genau das, was ich erwarte, und ich bin voller Freude:DataGridView-Spalten funktionieren nach dem Löschen von Daten und Neuauffüllen von Spalten nicht mehr
Die Code get-Taste ist:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles btn_GetData.Click
cnString = "datasource=" + ip + ";username=" + username + ";password=" + password + ";database=" + database_name + ""
sqlQRY = "Select * from " + table_name + " WHERE Batch =" + txt_PalletNo.Text + ""
If txt_PalletNo.Text = "*" Then
sqlQRY = "Select * from " + table_name + ""
Else
sqlQRY = "Select * from " + table_name + " WHERE Batch =" + txt_PalletNo.Text + ""
End If
conn = New MySqlConnection(cnString)
Try
conn.Open()
da = New MySqlDataAdapter(sqlQRY, conn)
Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)
da.Fill(ds, "" + table_name + "")
DataGridView1.DataSource = ds
DataGridView1.DataMember = "" + table_name + ""
txt_qty.Text = DataGridView1.RowCount
DataGridView1.DataSource = ds
DataGridView1.DataMember = "" + table_name + ""
Catch ex As Common.DbException
MsgBox(ex.ToString)
Finally
txt_PalletNo.Clear()
conn.Close()
End Try
End Sub
Wenn ich jedoch eine Schaltfläche verwende, um das Raster zu löschen und eine neue Datenmenge anzufordern, scheinen sich die Spalteneigenschaften zu ändern, die Spalten ändern sich und die Spalte 4 scheint in eine normale Textspalte zu wechseln, wie hier gezeigt:
Die klare Tastencode ist:
Private Sub btn_Clear_Click(sender As System.Object, e As System.EventArgs) Handles btn_Clear.Click
DataGridView1.DataSource = Nothing
ds.Clear()
DataGridView1.Rows.Clear() 'I also tried Columns.Clear() Here
txt_PalletNo.Clear()
txt_qty.Clear()
End Sub
ich verstehen müssen helfen, was passiert, wenn ich die Funktion ausgeführt, dass das Gitter ein zweites Mal oder drittes Mal auffüllt. Ich dachte, das Löschen des Datensatzes und das Ausführen der Funktion würden jedes Mal die gleichen Spalteneigenschaften ergeben. Um demütig und ehrlich zu sein, ist dies mein erster Versuch DataGridView zu benutzen, so dass mein Wissen sehr begrenzt ist. Ich hoffe, dass es eine einfache Eigenschaft ist, die ich nicht richtig ausgewählt habe.
Alle Hinweise würden sehr geschätzt werden.
Ich glaube nicht, das es sein sollte ds.Clear() – Claudius
Von diesen Symptomen würde ich sagen, dass Sie Ihre Spalten mit dem Designer definiert haben und Nach Löschen löscht man jede im Designer vorgenommene Einstellung. Übrigens, warum Sie die Variable table_name mit leeren Strings verketten? – Steve
Versuchen Sie, 'DataGridView1.AutoResizeColumns()' zu Ihrer Laderoutine hinzuzufügen. – rheitzman