Laden...

DataGridView: Sortierung (automatisch) aktualisieren, nachdem sich (Sortier-)Werte geändert haben

Erstellt von chilic vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.244 Views
C
chilic Themenstarter:in
2.121 Beiträge seit 2010
vor 10 Jahren
DataGridView: Sortierung (automatisch) aktualisieren, nachdem sich (Sortier-)Werte geändert haben

Hallo

Ich hab schon wieder ein Problemchen.
Und zwar habe ich ein DataGridView, an dem mittels einer DataView eine DataTable hängt.
Die View ist gefiltert und sortiert die Daten außerdem anhand einer int Spalte.
Per Programm setze ich den Sortierwert einer Zeile über
((DataRowView)selectedRow.DataBoundItem)["sortierfeld"] = wert;

Dabei wird zwar der Wert richtig im Grid angezeigt, aber die Sortierung ändert sich nicht. Ich muss erst irgendwo ins Grid klicken, dann organisiert sich die Ansicht plötzlich um und alles stimmt.

Setze ich den Wert testweise über
dataview[1]["sortierfeld"] = wert;
dann wird die Sortierung gleich angewandt.

dataview[...] gibt ein Objekt vom Typ DataRowView zurück. Das ist für die ausgewählte Zeile das selbe Objekt (verglichen mittels == ) wie selectedRow.DataBoundItem. Von daher glaube ich eigentlich durch beide Zugriffe das selbe zu bewirken. So wie ich es machen will ists mir lieber, da ich dann wirklich auf der RowView der selektierten Zeile bin.

Wie ist dieser Unterschied im Verhalten zu erklären?
Und vor allem, was muss ich nach dem Setzen des Werts aufrufen damit die Sortierung durchgeführt wird? Ich finde in keinem der Objekte etwas passendes.

4.221 Beiträge seit 2005
vor 10 Jahren

Mach mal ein BeginEdit vor
und EndEdit nach dem setzen.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

C
chilic Themenstarter:in
2.121 Beiträge seit 2010
vor 10 Jahren

Das geht. Ich muss dazu bei jeder DataRowView Begin und End aufrufen.
Mein Gedanke ging in die Richtung, nur einmalig nach allen Änderungen etwas aufzurufen damit alles aktualisiert wird. Scheint aber leider nicht möglich zu sein, auch setzen des Sortierkriteriums hat nichts geholfen.
Aber wenigstens funktioniert es jetzt.