Berechnungen im Validated-Event von TextControls

25/08/2009 - 09:09 von Michael Erlinger | Report spam
Hallo

Ich habe folgendes Problem bei meiner Applikation - Ich führe
Berechnungen von mehreren verschiedenen TextControls durch, die auch
via DataBinding an eine Datenbank-Tabelle gebunden sind. Alle
TextControls haben das gleiche Validated-Event zugewiesen, und im
Event rufe ich eine Berechnungs-Methode auf.

Wenn ich Daten neu erfasse, funkioniert alles soweit einwandfrei;
kommen Daten aus der Tabelle, die dann nur mehr angezeigt werden
sollen, stimmen die Werte nicht mehr.

In der Berechnungs-Methode greife ich auf die "Text"-Eigenschaft der
Controls zu...und wahrscheinlich wird das das Problem sein, bei Daten
die aus der Tabelle kommen.sollte ich hier wohl auf die DataRow
zugreifen ?!?!

Kann mir zu meinem Problem bitte jemand weiterhelfen, wie ich das
sauber und effizient lösen kann?
Danke schon mal & schönen Gruß
Michael
 

Lesen sie die antworten

#1 Elmar Boye
26/08/2009 - 11:59 | Warnen spam
Hallo Michael,

Michael Erlinger schrieb:
Ich habe folgendes Problem bei meiner Applikation - Ich führe
Berechnungen von mehreren verschiedenen TextControls durch, die auch
via DataBinding an eine Datenbank-Tabelle gebunden sind. Alle
TextControls haben das gleiche Validated-Event zugewiesen, und im
Event rufe ich eine Berechnungs-Methode auf.

Wenn ich Daten neu erfasse, funkioniert alles soweit einwandfrei;
kommen Daten aus der Tabelle, die dann nur mehr angezeigt werden
sollen, stimmen die Werte nicht mehr.

In der Berechnungs-Methode greife ich auf die "Text"-Eigenschaft der
Controls zu...und wahrscheinlich wird das das Problem sein, bei Daten
die aus der Tabelle kommen.sollte ich hier wohl auf die DataRow
zugreifen ?!?!



Die Validated Ereignisse kommen bei der Standardeinstellung der
Binding Klasse mit DataSourceUpdateMode.OnValidation zu früh.
Denn auch die Binding Klasse hàngt sich dort ein und übertràgt
die Daten bei erfolgreicher Validierung.
Und so ist die gebundene DataRow zu dem Zeitpunkt womöglich
nicht vollstàndig aktualisiert.
Je nach Reihenfolge der Ereignisse für die einzelnen Steuerelemente,
worauf man wenig Einfluß nehmen kann.

Berechnungen, die über mehrere Spalten laufen können besser
im BindingSource.BindingComplete Ereignis behandelt werden
<URL:http://msdn.microsoft.com/de-de/lib...e.aspx>
wobei es sich um das weitergeleitete Ereignis des CurrencyManagers handelt
<URL:http://msdn.microsoft.com/de-de/lib...e.aspx>
wenn Du keine BIndingSource einsetzt.

Wird das Ereignis mit BindingCompleteState.Success und
BindingCompleteContext.DataSourceUpdate ausgeführt,
so sind die Daten in der Datenquelle angekommen.
Und alle Steuerelemente sollten zu dem Zeitpunkt
gültige Daten enthalten.

Gruß Elmar

Ähnliche fragen