Ich habe eine Datagridview, die ich verwende, um eine Liste der Objekte anzuzeigen. Diese Objekte haben mehrere Eigenschaften, die zum Füllen der Spalten der Datagridview verwendet werden.Kann aktualisierte Liste in datagridview nicht aktualisieren
Um den Datagridview zu füllen, habe ich eine Funktion, die ich eine Referenz der Datagridview zu übergeben. Wenn das Formular erstellt wird, wird das form.Load -Ereignis ausgelöst und die externe Funktion funktioniert einwandfrei. Wenn ich jedoch die Datenquelle mit der gleichen Funktion neu lade (die tatsächlich von einem Ereignis für das erneute Laden aufgerufen wird), kann die datagridview nicht mit der aktualisierten Liste der Objekte neu geladen werden.
Hier ist der Code für die Update-Funktion:
Public Function UpdateDataGridView(ByRef datagridView As Windows.Forms.DataGridView) As DataGridView
'clear the gridview's previous iteration
If datagridView Is Nothing Then
datagridView = New DataGridView
End If
datagridView.AutoGenerateColumns = False
Dim bindingSource As BindingSource = New BindingSource()
If datagridView.DataSource IsNot Nothing Then
bindingSource.DataSource = Nothing
bindingSource.ResetBindings(False)
End If
bindingSource.DataSource = masterHopperList
datagridView.DataSource = bindingSource
Return datagridView
End Function
ich verschiedene Arten von Bestücken der Datagridview versucht haben, darunter eine Bindungsquelle verwendet (was ich oben haben), eine verbindliche Liste setzen und bevöl jede Zeile einzeln durch Iteration durch die Liste. Keine von ihnen funktioniert.
Was fehlt mir, damit das funktioniert?
Edit: Hier einige der Code-Snippets für wo ich Objekte in die Liste
es auf Modulebene Hinzufügen Initialisierung:
Public masterHopperList As New List(Of IHopperItem)
eine temporäre Liste von Objekten Verschmelzung (Objekte werden mit der IList (Of T) .Add-Methode) zur Master-Liste hinzugefügt.
Public Function concatHopperArray(ByVal masterHopperList As List(Of IHopperItem), ByVal hopperListToAdd As List(Of IHopperItem)) As List(Of IHopperItem)
'merges two IHopperItem lists together
'if the master is empty, then we can just return the "ToAdd" list
If masterHopperList.Count = 0 Then
Return hopperListToAdd
End If
'alternatively, if the toAdd array is empty or zero then we can just grab the master and return it
If hopperListToAdd.Count = 0 Then
Return masterHopperList
End If
'barring those then we can just merge the two lists
masterHopperList.AddRange(hopperListToAdd)
Return masterHopperList
End Function
Was ist 'MasterHopperList' (welcher Typ)? Warum erstellen Sie dort einen neuen DGV, wenn Sie nur die Datenquelle aktualisieren möchten? – Plutonix
masterHopperList ist eine Liste (Of) eines benutzerdefinierten Objekts. Es enthält im Wesentlichen Eigenschaften, die ich verwende, um den DGV zu füllen. Das Erstellen eines neuen DGV ist da, um eine Null-Referenz-Ausnahme zu vermeiden, die ich früher bekommen habe. Ich habe nur vergessen, es herauszunehmen. – Mwinslett
Worauf genau erfrischst du dich? Ein db oder Code-Objekte? – Plutonix