datagridview nicht updaten auf die datasource gebunden
Ich versuche, das datagridview aktualisieren, wenn ich ein update der datasource und ich habe kein Glück überhaupt.
Hier ist meine Bindung:
Private _dgbNews As SortableBindingList(Of SalesMessageRecord)
Private Sub SalesMessageScreen_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'_dgbNews.RaiseListChangedEvents = True
_dgbNews = AllNews()
BindingSource1.DataSource = AllNews()
DataGridView1.DataSource = BindingSource1
MassageDemRows()
End Sub
dies ist AllNews()
:
Public Function AllNews() As SortableBindingList(Of SalesMessageRecord)
Dim sm = New SortableBindingList(Of SalesMessageRecord)
Dim allnewsitems = News.GetAllNewsItems(Configuration.CompanyID).ToList()
For Each allnewz As News In allnewsitems
Dim smr = New SalesMessageRecord
smr.Body = allnewz.NewsBody
smr.CorporationId = CType(allnewz.CorporationId, Guid)
smr.Expiration = allnewz.Expiration
smr.IsActive = allnewz.IsActive
smr.NewsId = allnewz.NewsId
smr.Title = allnewz.NewsTitle
smr.SortOrder = allnewz.OrderNumber
smr.TokenId = allnewz.TokenId
smr.IsNew = False
sm.Add(smr)
Next
Return sm
End Function
Und das ist, wo ich bin versucht, zu aktualisieren:
Private Sub button_Save_Click(sender As System.Object, e As System.EventArgs) Handles button_Save.Click
If _currentRow < 0 Then
Return
End If
_dgbNews(_currentRow).Expiration = datetimepicker_ExpirationDate.Value
_dgbNews(_currentRow).SortOrder = CInt(numericupdown_SortNumber.Value)
_dgbNews(_currentRow).IsActive = checkbox_Active.Checked
_dgbNews(_currentRow).Body = richtextbox_Body.Text
_dgbNews(_currentRow).Title = textbox_Title.Text
DataGridView1.Refresh()
News.UpdateNewsRecord(_dgbNews(_currentRow).NewsId,
_dgbNews(_currentRow).Expiration,
_dgbNews(_currentRow).SortOrder,
_dgbNews(_currentRow).IsActive,
_dgbNews(_currentRow).Body,
_dgbNews(_currentRow).Title)
End Sub
Die Datenbank zu aktualisieren ist, ohne Frage, aber der datagridview wird nicht aktualisiert.
- Warum aktualisieren Sie die datagrid-vor der Durchführung der News.UpdateNewsRecord ? Versuchen Sie: stackoverflow.com/questions/2580053/...
- News.UpdateNewsRecord ist, was updates meiner Datenbank. Es sollte keine Auswirkungen auf die datagridview. Auch ich habe mich verändert, dass Sie nicht verwenden die BindingSource-aber das machte keinen Unterschied.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Recht, ich nehme einen Riss an diesen. Bindingsources sind wirklich nützlich, wenn Sie zusammen mit einem DGV. Jedoch, Sie werden eher schrecklich in der Weise, dass Sie geben keine Informationen, was so überhaupt, warum Sie nicht funktionieren.
Zunächst würde ich sagen, dass Sie Ihre verbindliche Quelle ist der falsche Datasource.
Wie Sie se Sie haben AllNews() als Datasource. Aber Sie fügen Sachen zu _dgbNews und erwarten Allnews() zu ändern. Protip, gibt es nicht. Wenn Sie setzen Sie DataSource auf diese:
Dann atleast Sie sollten erwarten, einige ändern, wenn die Liste aktualisiert wird. Nun ist dies, was Sie eigentlich verpassen. In der button speichern klicken Sie auf fügen Sie ein Element der Liste, das ist jetzt in Ordnung, wenn Sie fertig mit den obigen. Aber warten Sie, der Datenquelle geändert und es ist nichts passiert. Dies ist, weil Sie nicht sagen, das datagridview ändern. Machen die Bindingsource sagen, alles, was es verbunden wird, zu aktualisieren. Mit dabei:
Dies ist besser als GD.Aktualisierung (was jetzt funktionieren könnte) da Ihr bindingsource angebracht werden könnte, um andere Dinge (ich weiß es nicht, aber für zukünftige Referenz).
Versuchen, diese und sehen, ob es besser gehen.
Hatte ähnliches Problem mit dem DataGridView nicht anzeigen Daten von meinem datasource, herausgefunden, dass meine Bindung Eigenschaften der Klasse waren regelmäßige int oder string, anstatt Sie erklärt zu bekommen gesetzt.
geändert von
int RedeemID;
zu
public int RedeemID { get; set; }
VERSUCHEN SIE DIES:
(NACH AUSFÜHRUNG DER UPDATE-BEFEHL AUS DEN DATEN-ADAPTER)
Mir.TableAdapter1.Fill(Me.DataSet1.Tabelle1)