Announcement

Collapse
No announcement yet.

DataBinding

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DataBinding

    Hallo zusammen,
    ich habe eine Datenbankabfrage welche ich als DataView per DataSource an eine ComBobox gebunden habe.

    Den DataView habe ich per DataBinding an eine Textbox gebunden, sodaß bei Änderung der Selection der ComboBox der entsprechende Wert in die Textbox geschrieben wird.

    So weit so gut. Das funktioniert auch alles.

    Jetzt möchte ich aber die Werte in der Textbox auch ändern können. Wenn ich jetzt einen Wert in die Textbox schreibe, und z.B. einen Button Klicke wird der alte Wert wieder in die TextBox geschrieben.

    Wie kann ich das verhindern und trotzdem die Eigenschaft des Databinding behalten ?


    Ich hoffe mir kann jemand wieterhelfen....

    Danke

  • #2
    Was soll denn mit dem Wert, den du von hand ins Textfeld eingibst passieren? Soll der entsprechende Wert in der Combobox angezeigt werden?

    Durch das Databinding wird die Bindung jedesmal aufgefrischt wenn deine Form neu gezeichnet wird. Deshalb steht da dann auch immer wieder der "alte" Wert drin. (Schätze ich jetzt mal)

    Comment


    • #3
      Ich möchte den Wert wie oben beschrieben anzeigen lassen. Ich schreibe diesen in eine TextBox um diesen evtl. ändern zu können. Mit dem ButtonClick möchte ich dann den "neuen Wert" in die Datenbank speichern...

      Comment


      • #4
        Dein Button muss also dann folgende Schritte auslösen:

        a) die DataView aktualisieren, also sowas wie ein Update darauf.
        b) dann der DataView sowas wie AcceptChanges sagen
        c) die Änderung an der DataView der Datenbank mitteilen und ggf. die Werte der Combobox updaten.

        Danach sollte dann alles stimmen.
        Wie das jetzt in Codeform auzusehen hat kann ich dir jetzt aus dem Kopf leider auch nicht sagen, aber ich denke der Weg geht in die richtige Richtung.

        Comment


        • #5
          Hallo,

          Andreas' Vorschlag ist im Prinzip richtig, aber im Detail ziemlich verkehrt.

          Originally posted by Andreas Mahr View Post
          a) die DataView aktualisieren, also sowas wie ein Update darauf.
          Das könnte funktionieren (aber sicher bin ich mir nicht). Ich halte es für besser, die DataTable selbst zu ändern und danach die DataView neu zu erstellen.

          b) dann der DataView sowas wie AcceptChanges sagen
          Das ist grundfalsch (abgesehen davon, dass es zur DataTable gehört). AcceptChanges ist (entgegen dem Sprachgebrauch) keine Bestätigung des Anwenders oder Programmierers an die DataTable, dass die Änderungen zu akzeptieren sind und gültig sein sollen; sondern es ist die Anweisung der DataTable an das NET Framework, dass die Änderungen bereits erledigt sind. Bei späteren Aufrufen von DbDataAdapter.Update werden diese Änderungen nicht mehr berücksichtigt!

          c) die Änderung an der DataView der Datenbank mitteilen und ggf. die Werte der Combobox updaten.
          Richtig, aber das gehört zu (a).

          Jürgen

          Comment


          • #6
            Originally posted by Jürgen Thomas View Post
            Das ist grundfalsch (abgesehen davon, dass es zur DataTable gehört). AcceptChanges ist (entgegen dem Sprachgebrauch) keine Bestätigung des Anwenders oder Programmierers an die DataTable, dass die Änderungen zu akzeptieren sind und gültig sein sollen; sondern es ist die Anweisung der DataTable an das NET Framework, dass die Änderungen bereits erledigt sind. Bei späteren Aufrufen von DbDataAdapter.Update werden diese Änderungen nicht mehr berücksichtigt!
            stimmt, sorry, in die Falle laufe ich jedesmal

            Comment


            • #7
              Danke für eure Antworten.

              Ich bin jetzt doch einen anderen Weg gegangen....

              Ich habe beim Klick der ComboBox kein DataBinding genutzt, sondern habe mit einem neuen Select gegen die DB das Textfeld gefüllt.

              Im ButtonClick habe ich dann ein Update gegen die DB gefahren. Das schien mir von der Datensicherheit das Sinnvollste zu sein....

              Comment

              Working...
              X