Laden...

[erledigt] Aktuelle Zeile aus Tabelle in Status "Modified" nach BindingSource.BindingComplete

Erstellt von Christoph1968 vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.024 Views
C
Christoph1968 Themenstarter:in
93 Beiträge seit 2007
vor 11 Jahren
[erledigt] Aktuelle Zeile aus Tabelle in Status "Modified" nach BindingSource.BindingComplete

verwendetes Datenbanksystem: SQL2008 dev

Hallo zusammen,

ich verwende einen DataSet - DataTableAdapter um auf eine SQL-Datenbank zuzugreifen.

Eine der relevaten Tabellen enthaelt eine Spalte mit Bildern (Typ byte[] ), die ich in einem entsprechenden Dialog an eine PictureBox binde, die string- und int-Felder sind an TextBox oder NumericUpDown
gebunden, das bindingSource.Current wird ueber eine ComboBox
oder programmatisch (im Falle "New") gesetzt.

Bevor nun der Dialog verlassen oder ein anderes Element bearbeitet
werden soll, moechte ich die Eigenschaft DataSetRow.RowState benutzen, um festzustellen, ob Veraenderungen vorgenommen wurden.

Nun stelle ich fest, dass die aktuelle Zeile grundsaetzlich unmittelbar nach dem bindingSource.CurrentChanged-Event den RowState "Modified" aufweist, wenn das Feld vom Typ "image" an die PictureBox gebunden ist und das Bild angezeigt wird. So als ob der RowState alleine durch die Bindung veraendert werden wuerde.

In diesem Falle tritt auch ein BindingSouce.BindingComplete-Event mit Context DataSourceUpdate auf. BindingMemberInfo.BindingField ist das entsprechende image-feld.

Wenn ich diese Bindung aufhebe und kein Bild angezeigt wird,
ist der RowState "Unchanged" solange ich keine Daten veraendere
und wird erst dann "Modified" wenn ein Wert in z.B. einer Textbox
geaendert wird, kurz: so wie ich es gerne haette.

Hat jemand eine Idee, wie ich es hinbekomme, dass die entsprechende Zeile nach dem bindingSource.CurrentChanged-Event den RowState "Unchanged" nicht verloren hat.

Vielen Dank im Voraus

Christoph

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

Ich habe das jetzt so umgangen, dass ich den DataSourceUpdateMode auf "Never" gesetzt habe und die Aenderung
in der DataRow manuell nachpflege.

Ist nicht schoen, aber in diesem Fall ein gangbarer Weg.

Schoenen Tag noch

Christoph

2.187 Beiträge seit 2005
vor 11 Jahren

Hallo Christoph1968,

etwas spät aber ich fand meine idee nicht so gut und hab deshalb nix geschrieben. Aber mti der "manuell nachpflegen"-Idee kann sie mit halten:

Ich würde die PictureBox einfach nicht binden. Der Benutzer kann ja darin eh keine Änderungen machen und wird (wenn er das Bild ändern will/kann) ja einen Button oder MenüEintrag nutzen um ein neues Bild einzulesen. Daher könntest du die Bytes bei CurrentItemChanged, CurrentChanged oder DataSourceChanged manuell in die PictureBox übertragen.

Ist weniger Fehleranfällig als manuelles Nachpflegen.

Gruß
Juy Juka