Laden...

[Gelöst] Änderung einer weiteren Property eines Datengebundenen Objektes

Erstellt von Christoph1968 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.359 Views
C
Christoph1968 Themenstarter:in
93 Beiträge seit 2007
vor 5 Jahren
[Gelöst] Änderung einer weiteren Property eines Datengebundenen Objektes

verwendetes Datenbanksystem: MSSQL2012

Hallo zusammen,

ich habe eine Zeile einer Tabelle über eine Bindingsource an mehrere
controls innerhalb eines Dialoges (WinForm) gebunden.
Unter anderem ComboBoxen und CheckBoxen.

Ich möchte nun nach der Benutzerauswahl eines Wertes einer ComboBox
den Zustand einer der CheckBoxen je nach Wert auf "Checked" oder "Unchecked" setzen.

Mein Ansatz war nun, das im

ComboBox.ValueChanged-Event oder    
ComboBox.IndexChanged-Event oder  
BindingSource.CurrentChanged-Event  

der ComboBox zu machen.

Wenn ich dort jedoch den Wert der in der Checkbox angezeigten Property
verändere, wird der Wert der betreffenden ComboBox wieder zurückgesetzt
und sie steht auf ihrem ursprünglichen Wert vor der Benutzeränderung.

Es ist so als ob der 2. Zugriff auf die Zeile die Änderungen des 1. Zugriffs
zurücksetzen würde. Ein Row.AcceptChanges() in den EventHandlers
brachte auch nichts.

Welchen Trigger kann ich sonst noch nutzen, um die entsprechenden Änderungen durchzuführen ?

Vielen Dank für jede Hilfe.

Grüße

Christoph

P
441 Beiträge seit 2014
vor 5 Jahren

Hi,

ich bin kein Experte, was WinForms angeht und auch kein Freund von direktem Datenbankzugriff von Applikationen.. aber das kleingt, als würdest du Databinding betreiben. In dem Fall müsstest du dafür sorgen, dass die Datenquelle deiner Checkbox True wird, anstatt in der GUI das Checked zu setzen.

C
Christoph1968 Themenstarter:in
93 Beiträge seit 2007
vor 5 Jahren

Hallo Papst,

ja genau das versuche ich. Ich setze den Wert an den die Checkbox.Checked Property gebunden ist auf "true" oder "false".
Ich versuche nicht die Checkbox.Checked Property selbst auf True oder False zu setzen.

16.834 Beiträge seit 2008
vor 5 Jahren

Anders als WPF gibt es in WinForms keinen "bestimmten" Pattern für Databinding.
Sehr weit verbreitet (und meistens empfohlen) ist der MVP Pattern (Model–view–presenter).

C
Christoph1968 Themenstarter:in
93 Beiträge seit 2007
vor 5 Jahren

Hallo Ihr Beiden,

also wenn der Abt und der Papst schon versuchen mir zu helfen,
dann muss das fast eine göttliche Fügung sein 😉

Amen !

@Abt: Ich verwende ein DataSet, das über TableAdapter den Zugriff
auf die SQL-Datenbank abbildet.
Die Bindung erfolgt über BindingSources. Das Projekt ist sehr umfangreich
und im Prinzip funktioniert die Datenbindung hervorragend.
Nur greife ich an dieser Stelle wohl zum falschen Zeitpunkt auf ein Property
betreffenden Zeile zu.

Ich bin nun auf der Suche nach einem alternativen Trigger, um dieses Property setzen zu können, quasi nachdem die erste Änderung, die durch die ComboBox verursacht wurde, abgeschlossen ist.

C
Christoph1968 Themenstarter:in
93 Beiträge seit 2007
vor 5 Jahren

Hilf Dir selbst, dann hilft Dir Gott !

Ich habe nun ein BindingSource.EndEdit() für die BindingSource der Zeile
im BindingSource.CurrentChanged EventHandler für die ComboBox eingebaut.
Damit wird die durch die ComboBox initiierte Änderung an die betreffende Zeile
abgeschlossen und die nachfolgende Änderung der weiteren Property wird akzeptiert.

Trotzdem danke für Eure Hilfsbereitschaft.

Grüße

Christoph