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.
Mach mal ein BeginEdit vor
und EndEdit nach dem setzen.
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
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.