Update der Textfelder über die ID bzw über den BindingNavigator

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von HerrFrie.

    Update der Textfelder über die ID bzw über den BindingNavigator

    Hallo
    hab schon wieder einen Datenbank bzw. Verständis Problem.

    Ich habe zwei DatenbankTabellen - einträge sichtbar in Textboxen die ich auch editieren und danach wieder speichern kann.
    Ebenso habe ich eine DateTable mit dem Inhalt der zwei Tabellen erzeugt welche in einem DGV sichtbar sind.
    Ich möchte nun in der DGV eine Zeile auswählen und diese dann in die Textboxen übertragen.
    Ich wollte dies über die BestellNr. (ID) erledigen.
    d.H. ich wähle eine Zeile im DGV aus - doppelklick auf die zeile - eintrag der BestellNr. in die Textbox (von der Bestelltabelle.)
    Das Funktioniert auch so.

    Ich versteh nur nicht warum sich dann nicht automatisch die anderen Textboxen automatisieren welche zu der Bestellung mit der BestellNr. gehöhren.
    Die Bestellnr. ist ein Primärschlüssel!

    1)
    Was mach ich da verkehrt
    2) Die Bestellboxen lassen sich aber über den "Binding Navigator" bedienen = rauf, runter, eingabe einer Zahl ,speichern usw.
    Woher weis der Binding Navigator welche Text in die Textboxen gehören.

    !!!! hier mal ein Bild - ich hab auch das Programm als zip mit angehängt.

    !!! Das ist noch ein Testprogramm, mit dem ich erst mal alles teste was ich dann im richtigen Programm benötige.


    pcbOrderDatabase95.zip


    Gruß
    Norbert
    Du solltest das über eine BindingSource machen.
    Du bindest die BindingSource an deine DataTable/DataSet und das DGV und den BindingNavigator an die BindingSource.
    So reagiert das DGV schon mal auf den BindingNavigator und anders herum.
    Die Textboxen bindest du mit

    VB.NET-Quellcode

    1. Textbox1.DataBindings.Add("Text", BindingSource, "Spaltenname aus Tabelle")


    Dadurch wird dann auch der entsprechende Text bei Auswahl im DataGridView oder BindingNavigator in der Textbox aktualisiert.
    Hey

    Danke HerrFrie für deine Antwort.
    Ich bin ja schon mal froh, daß mir jemand helfen möchte.
    Allerdings hab ich deine Antwort nicht so recht kapiert, bzw. ich weis nicht wie ich es genau umsetzen muß.
    Wenn ich einmal die Vorgehensweise genau gesehen habe dann versteh ich es auch vielleicht.
    Ich hab mal ein Bild angehängt wo man den Aufbau sieht.

    Nordwind2DataSet = datenbank
    Bestellung* = zugehöhrig zur Tabelle Bestellung der Datenbank
    Personal* = zugehöhrig zur Tabelle Personal der Datenbank
    _____
    DataTable1* = neu erzeugte Tabelle in Visual Basic = Summe von Bestellung und Personal = DGV damit ich später verschdiedene Filter (Viewsets) setzen kann.
    MasterBindingNavigator = Navigator von DGV
    ________

    Könntest du mir bitte bitte nochmal helfen damit ich endlich den Zusammenhang verstehe
    Ich probier nun schon seit Tagen rum um endlich alle Probleme zu lösen.

    Im angehängten Bild sieht man nochmal alles

    Gruß
    Norbert
    Hallo Norbert,

    um den Zusammenhang besser zu verstehen, solltest du auf die Designer verzichten. Es mag zwar auf den ersten Blick einfacher erscheinen, weil der dazugehörige Code automatisch erstellt wird, aber dieser wird nicht in Form1 eingetragen. Nachträgliche Änderungen und Anpassungen werden dadurch ziemlich problematisch, so kann ich aus eigener Erfahrung sagen.
    Wenn du den Code für die Bindungen etc. selber schreibst, verstehst du den Zusammenhang besser und es wird einfacher sein, den Code für dein Vorhaben anzupassen.

    Ich ziehe lediglich die Objekte in meine Form, um sie visuell einfacher positionieren zu können und selbst dass kannst du auch im Code selber schreiben, du siehst die Objekte dann nur nicht bevor du gestartet hast.

    Zu deinem momentanen Projekt.
    Du mußt dem BindingNavigator auch sagen, welches die Bindingquelle --> BindingSource ist. Wenn du den oberen BindingNavigator anklickst findest du in den Eigenschaften den Punkt BindingSource. Hier wählst du mal BestellungenBindingSource aus. Jetzt kannst du mit dem oberen Navigator die Bestellungen durchklicken. Da es dort jetzt eine Relation zu dem Personal gibt, werden diese auch mit aktualisiert.
    Gibst du dem BindingNavigator die PersonalBindingSource, kannst du mit dem Navigator die Personen aus der Tabelle Personen durchblättern. Da es von dieser Tabelle ausgehend keine Relation gibt, ändern sich die Bestellungen NICHT mit.

    Für das DataGridView hast du ein eigenständiges DataSet, wo beide Tabellen drin enthalten sind. Diese sind mit der DataTable1BindingSource verbunden. Wenn du jetzt dem unteren BindingNavigator als BindingSource den DataTable1BindingSource zuweist, kannst du mit dem unteren Navigator das DataGridView durchklicken, es ändert sich allerdings nichts im oberen Bereich.

    Wenn du das jetzt alles von Hand schreibst, benötigst du z.B. nur 2 DataTable, 1 Bindingnavigator und 1 BindingSource, was es ein wenig übersichtlicher macht.

    Ich hoffe, ich habe dich jetzt nicht völlig verwirrt.

    EDIT : ich habe mal ein vereinfachtest Beispiel daraus gemacht. Allerdings ist es noch nicht ganz so wie im Designer, soll aber ja auch nur als Ansatz dienen.
    Dateien
    • Datenbindung.rar

      (186,21 kB, 186 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „HerrFrie“ ()