Datengebundene Listbox aktualisieren

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von raist10.

    Ich denke anhand von dem Screenshot kann ich das besser erklären.

    Also die Listbox auf der linken Seite der Form ist an eine Datenbank gebunden. Wenn ich auf einen Eintrag, wie z.B. "Geiselwind" klicke, werden die restlichen Rasthof Informationen auf der rechten Seite der Form in der Textbox angezeigt.
    Klicke ich nun auf den Button "Rasthof löschen", wird der Rasthof aus der Datenbank gelöscht, bleibt aber bis zu einen Neustart des PRogramms weiter in der Listbox stehen.
    Jetzt ist meine Frage, wie kann ich das machen, das wenn ich auf "Rasthof löschen" klicke, das sich die Listbox dann die aktualisierten Daten aus der Datenbank holt und mir anzeigt. Sodass ich immer die aktuellen Daten habe.

    Ich hoffe du verstehst was ich meine.

    LG
    Bilder
    • Unbenannt.png

      82,66 kB, 541×351, 296 mal angesehen
    Das Probiere ich gleich direkt mal aus.

    EDIT : Funktionier leider nicht oder ich bin zu blöd.

    VB.NET-Quellcode

    1. Rasthof.RasthofTableAdapter.Fill(Rasthof.BernhardDataSet.rasthof)

    Das habe ich einfach mit in das Click-Event eingefügt.

    big-bang90 schrieb:

    Jetzt ist meine Frage, wie kann ich das machen, das wenn ich auf "Rasthof löschen" klicke, das sich die Listbox dann die aktualisierten Daten aus der Datenbank holt und mir anzeigt.

    Wieso sollte deine App sich Daten holen, wenn sie welche gelöscht hat?
    Sie soll sie vielmehr löschen, und mw. der DB mitteilen, dasse sie gelöscht hat.

    Guck dirmal "Datenbank in 10 Minuten" auf Movie-Tuts an - die App kann auch Datensätze löschen.
    Allerdings mache ich mir da nicht die Mühe, extra-Buttons dafür zu proggen, sondern verwende DatagridView, mit dem das ganze CRUD abgedeckt ist.
    Natürlich kann man ebenso auch Buttons dranproggen, die eben einen Datensatz aussm Dataset löschen - wie gesagt: eine Listbox (oder auchn DGV) aktualisiert sich dann von selber.

    Für einen einzelnen Löschbefehl muß man übrigens garnicht die DB kontakten, sondern es reicht ein Button "Speichern", mit dem man, wann immer man will, alle Änderungen auf einen Rutsch speichert.

    Dein Bild zeigt übrigens einen Einzelblatt-View.
    Ich glaub ich hatte mich versehentlich falsch ausgedrückt.
    In der Listbox soll dann natürlich der Name des gelöschten Rasthof entfernt werden.

    LG.

    PS: Ich habe die Sachen auf der Rechten Seite der Form alle selbst gemacht, ICh wusste nicht das es auch viel einfacher geht, aber danke für den Link :)

    big-bang90 schrieb:

    In der Listbox soll dann natürlich der Name des gelöschten Rasthof entfernt werden.
    Nichts anneres habich auch verstanden gehabt.

    Ja - Entferne den Datensatz aus dem Dataset (DB hat erstmal nix damit zu tun), dann verschwindter auch ausse Listbox.
    Das ist das Wesen von Databinding.

    Wenn man sich dran gewöhnt hat, verändert das die Denkweise. Man denkt dann nicht mehr über die Controls nach, und was da rein, raus, und wie anzeigen, sondern man betrachtet die Daten (um die es ja letztlich geht).
    Jetzt habe ich noch ein Problem.
    ICh hab eine Form erstellt mit der man Rasthöfe hinzufügen kann. Ich rufe diese Form mit

    VB.NET-Quellcode

    1. Rasthofadd.ShowDialog()
    auf.
    Meine Frage ist jetzt, wie kann ich die Listbox aktualisieren lassen wenn ich die Rasthofadd Form schliesse, so das der neue Rasthof auch direkt angezeigt wird?

    LG und Danke

    big-bang90 schrieb:

    wie kann ich die Listbox aktualisieren lassen wenn ich die Rasthofadd Form schliesse, so das der neue Rasthof auch direkt angezeigt wird?

    ErfinderDesRades schrieb:

    Wenn man sich dran gewöhnt hat, verändert das die Denkweise. Man denkt dann nicht mehr über die Controls nach, und was da rein, raus, und wie anzeigen, sondern man betrachtet die Daten (um die es ja letztlich geht).

    Offensichtlich ist deine Denkweise noch unverändert, du denkst immer noch über die Listbox nach, anstatt über die Daten.
    Wenn dein Rasthof-Form einen Rasthof added (oder sonst irgendwer), dann aktualisiert sich die Listbox selbst - sagte ich das nicht schon? BindingSource.AddNew() könnte dein Freund sein.

    Das Problem ist, mit deiner schlechten Idee, ein zusätzliches Form aufpoppen zu lassen, halst du dir eine Form2Form-Kommunikation auf.

    Erste Überlegung sollte sein: Brauchst du das wirklich? Userfreundlicher isses, wenn die Datensätze auf demselben Form editiert und geaddet etc. werden können, auf dem sie auch ausgesucht werden.

    Aber üblicherweise ist die vbParadise-Kundschaft naheliegenden Lösungen abgeneigt, wenn sie erstmal etwas umständliches in Angriff genommen hat ;).

    Also arbeite dich man in Vorüberlegung zur Form2Form ein, inklusive verlinkter Infos.
    Einfacher noch wird sein, VeryBasics, Kommunikation der Objekte.

    Achso - ShowDialog - das ist noch einfach, weil da kannst du per Rückgabewert kommunizieren (ist in VeryBasics ja erwähnt). Als Beispiel einer Kommunikation per Return kann das LogIn-Form des Samples aussm 1. Link gelten - is aber c#

    ErfinderDesRades schrieb:


    Das Problem ist, mit deiner schlechten Idee, ein zusätzliches Form aufpoppen zu lassen, halst du dir eine Form2Form-Kommunikation auf.

    Erste Überlegung sollte sein: Brauchst du das wirklich? Userfreundlicher isses, wenn die Datensätze auf demselben Form editiert und geaddet etc. werden können, auf dem sie auch ausgesucht werden.


    Also so als grundsätzlich Aussage gesehen lege ich dagegen - wie bereits schonmal ausdiskutiert ;) - Veto ein.

    Aber hier in dem Falle hast Du aber Recht. Vor allem da ja schon die Vorarbeit (links Auflistung, rechts Detailanzeige) perfekt dazu passt auf der rechten Seite nicht nur Rasthöfe löschen zu können, sondern auch im rechten Bereich Rasthöfe anzulegen und zu editieren.

    Gruß

    Rainer