BindingSource.Position - Problem beim Setzen

19/06/2008 - 09:56 von M.Erlinger | Report spam
Hallo

ich habe folgendes Problem beim Einfügen einer neuen Row. Ich setze nach dem
_dtProtokoll.Rows.Add(newRow);
die Position folgend:
_bsProtkoll.Position = _bsProtkoll.Count -1;

So - jetzt gibt es das Problem, dass dies nicht immer funktioniert. Wenn ich
in meinem DataGrid 2 Zeilen enthalten haben, und starte das Programm zum
Ersten mal - dann funktioniert das Setzen der Position nicht! Wiederhole ich
anschließend den Add-Befehl für die Row, dann wird die Position richtig
gesetzt.
Habe ich von Programm-Beginn weg gleich mehr als 2 Zeilen im DataGrid
eingelesen, dann funktioniert das Setzen der Position bis jetzt immer??
Das DataGrid ist nicht sortiert; war vorher sortiert - und ich habe jetzt
testweise den Sort in den SELECT genommen - hat aber nichts von meinem
Problem veràndert.

Kann mir bitte dazu jemand weiterhelfen. Vor allem das Phànomen, dass bei 2
Zeilen im DataGrid das nicht gleich funktioniert?

Danke und Grüsse
Michael
 

Lesen sie die antworten

#1 Elmar Boye
19/06/2008 - 10:59 | Warnen spam
Hallo Michael,

M.Erlinger schrieb:
ich habe folgendes Problem beim Einfügen einer neuen Row.
Ich setze nach dem
_dtProtokoll.Rows.Add(newRow);
die Position folgend:
_bsProtkoll.Position = _bsProtkoll.Count -1;

So - jetzt gibt es das Problem, dass dies nicht immer funktioniert.



Wenn ich annehme, dass _dtProtokoll eine DataTable und _bsProtkoll deine
BindingSource, die an die Tabelle gebunden ist, so ist das zu erwarten.

Denn die BindingSource bindet hier an eine DataView und deren Index
ist nicht zwangslàufig identisch, sondern hàngt von der eingestellten
Sortierung, Filter usw. ab.

Deswegen solltest Du eine neue Zeile ebenfalls über die die BindingSource
anfügen, entweder über Add() oder besser die AddNew() Methode:
<URL:http://msdn.microsoft.com/de-de/lib...w.aspx>

wobei dort eine DataRowView geliefert wird.

Und in der Weiterung solltest Du alle Operationen, die die Oberflàche
betreffen über die Methoden der BindingSource ausführen. Damit vermeidest
Du Nebeneffekte, die durch das Manipulieren der zugrundeliegenden Listen
von unterschiedlicher Stelle auftreten können.

Gruß Elmar

Ähnliche fragen