Warum ist ListView nicht erfrischend?
Hallo, ich bin beim einfügen in eine Tabelle Lesen und alles wieder in eine ListView
Wenn ich wieder das Programm öffnen, das ich die Daten sehen, die ich gerade gespeichert, in meinem ListView
, aber dieser Datensatz nicht angezeigt wird in meinem ListView
beim speichern (es wird zwar gespeichert in der Tabelle).
Ich bin mit
listView.Update()
sowie
listView.Refresh()
aber es scheint nicht zu funktionieren. Ich bin nur mit einem SELECT
Abfrage zum Lesen von Daten aus der datareader
und speichern Sie es in meinem listView
wie folgt (die einwandfrei funktioniert)
Das problem ist nur, dass das listView-Steuerelement nicht aktualisieren sofort, aber es funktioniert, wenn ich schließen/öffnen Sie das Programm
hier ist der code, den ich verwende, am Ende meiner Save-Methode. grundsätzlich sind diese beiden Methoden aufgerufen werden,
Private Sub SetColumns()
Dim lstpenalty As New ListView()
lstpenalty.Items.Clear()
lstpenalty.Visible = True
lstpenalty.Bounds = New Rectangle(New Point(390, 55), New Size(560, 379))
lstpenalty.Name = "lstpenalty"
lstpenalty.FullRowSelect = True
lstpenalty.View = View.Details
lstpenalty.GridLines = True
lstpenalty.Items.Clear()
lstpenalty.Columns.Add("a", 75)
lstpenalty.Columns.Add("b", 70)
lstpenalty.Columns.Add("c", 105)
lstpenalty.Columns.Add("d", 98)
lstpenalty.Columns.Add("e", 90)
lstpenalty.Columns.Add("f", 105)
Me.Controls.Add(lstpenalty)
LoadPenaltyList(lstpenalty)
End Sub
Private Sub LoadPenaltyList(ByRef listView As ListView)
Dim gDR As OracleDataReader
Dim cmd As New OracleCommand
Dim lstpenaltyview As New ListViewItem
Try
cnn.Connect_to_Oper_Agent()
cmd.Connection = cnn.cnn
listView.Items.Clear()
cmd.CommandText = " select a," & _
"b, " & _
"c, " & _
"d," & _
"e," & _
"f" & _
" FROM myTable" & _
" commit"
gDR = cmd.ExecuteReader()
While gDR.Read
lstpenaltyview = listView.Items.Add(Null_To_String(gDR("a")))
lstpenaltyview.SubItems.Add(gDR("b"))
lstpenaltyview.SubItems.Add(gDR("c"))
lstpenaltyview.SubItems.Add(gDR("d"))
lstpenaltyview.SubItems.Add(gDR("e"))
lstpenaltyview.SubItems.Add(gDR("f"))
End While
listView.Update()
Catch ex As Exception
MsgBox("There was an error... -> " & ex.ToString)
Finally
cmd.Dispose()
cnn.Close_Conn()
End Try
End Sub
Vielen Dank für Ihre Hilfe
- Diese beiden Methoden nur für das Neuzeichnen des Steuerelements mit seinen aktuellen Daten. Sie müssen füllen Sie es wieder mit neuen Daten.
- Direkt nachdem der Benutzer auf speichern klickt (das einfügen), bin ich den Aufruf von zwei Methoden. Einer von Ihnen ist der neu-Aufbau der listView und der andere ist das Lesen der neuen Daten aus den Tabellen
- Zeigt code könnte helfen..
- Post die Methode, die Sie verwenden Sie zum füllen des ListView-Zitat und der code, den Sie verwenden, nach drücken von "speichern".
- Sie sind mit Windows Forms, richtig?
- Nur aktualisiert es mit dem code
- Nur aktualisiert der code
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lohnt es sich, zu schauen, was die Methoden tun.
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview_methods%28v=vs.71%29.aspx
Update : Bewirkt, dass das Steuerelement neu gezeichnet, die ungültig Regionen innerhalb des Clientbereichs.
Aktualisieren: Erzwingt die Kontrolle zu entkräften, dessen client-Bereich und sofort selbst aktualisieren und alle untergeordneten Steuerelemente.
Aktualisieren Sie mit Hilfe der Tabelle info, zuerst Deaktivieren Sie das listview, dann wiederholen Sie den Prozess, den Sie verwendet, um zunächst füllen Sie es.
So, ich war das erstellen der ListView dynamisch. Das Problem war, dass es immer schaffen ListViews über einander (memory leak), und es zeigte immer die Vorherige. Habe ich eine statische viewList versus dynamischer und das Problem ist gelöst:D
Verwenden
Statt
Clear