Element aus DataTable in Textfeld kopieren

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Nils.

    Element aus DataTable in Textfeld kopieren

    Guten Tag zusammen,

    ich habe folgendes Problem und kann leider nichts finden, was mir wirklich weiterhilft.

    Ich habe mit Hilfe einer Datenbank eine DataTable erstellt, welche ich in einem DataGridView wiedergebe.
    Dieses DataGridView dient der Auflistung aller Benutzer.

    Übereinen Doppelklick auf eine Zeile wird nun eine neue Form geöffnet,
    wo der Benutzer verwaltet werden kann, sprich z.B. Namen ändern.

    Und hier ist mein Problem.
    Ich bekomme es zwar hin, dass ich die passenden Daten des ausgewählten
    Benutzers nochmals aus der Datenbank auslese und in die entsprechenden Textfelder einfüge.

    VB.NET-Quellcode

    1. 'Form wird geladen.
    2. Private Sub User_Edit_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. 'Connection zur Datenbank öffnen.
    4. Try
    5. con.Open()
    6. 'Variable für den Index der aktuell ausgewählten Zeile deklarieren.
    7. Dim CuCeRoIn As Integer
    8. 'Variable für UserID deklarieren (anhand dieser wird später der entsprechende Datensatz aus der Datenbank gelesen).
    9. Dim SelectedUserID As String
    10. CuCeRoIn = User_Administration.dgvUsers.CurrentCell.RowIndex
    11. SelectedUserID = User_Administration.dgvUsers.Item(0, CuCeRoIn).Value
    12. 'Datenbankbefehl festlegen und ausführen.
    13. cmd.CommandText = "Select FIRST_NAME, LAST_NAME, USER_PROFILE from USERS where ID = " & SelectedUserID
    14. reader = cmd.ExecuteReader
    15. reader.Read()
    16. 'Textfelder mit Daten füllen.
    17. txtFirstName.Text = reader("FIRST_NAME")
    18. txtLastName.Text = reader("LAST_NAME")
    19. 'Verbindung schließen.
    20. reader.Close()
    21. con.Close()
    22. Catch ex As Exception
    23. MessageBox.Show(ex.Message)
    24. End Try


    Das klappt ohne Probleme.

    Ich möchte aber die Daten des Benutzers aus der bereits bestehenden DataTable auslesen und in die Textfelder einfügen.
    Weiß jemand wie das geht?
    Gibt es vielleicht sogar so einen einfachen "Select"-Befehl für die
    DataTable, wie für die Datenbank, mit welchem ich dann anschließend die Textfelder füllen kann?
    Grundfalsch ist die Vorstellung, beim Öffnen der neuen Form müssest erneut mitte DB kommunizieren.
    Die Daten sind doch bereits in deiner Anwendung, es verursacht nur Wirrsal und Redundanz-FolgeFehler, wenn du die erneut abrufst.

    Die Forms müssen miteinander kommunizieren, nicht mitte DB.

    gugge hier Lösung: Daten laden, speichern, verarbeiten - letzter Post.
    Das habe ich mir ja schon fast gedacht, deswegen möchte ich ja wissen, wie ich die vorhandene DataTable auslesen kann, dann muss ich ja nicht nochmal mit der DB kommunizieren.

    Wie in dem Video die Daten aus dem DataGridView in die neue Form kopiert werden sieht ja sehr genial aus,
    aber wie es funktioniert, habe ich leider nicht wirklich verstanden...
    Also ich habe es jetzt einfach mal wie folgt gemacht:

    Mit dem Code, mit welchem ich auch die UserID herausgesucht habe

    VB.NET-Quellcode

    1. SelectedUserID = User_Administration.dgvUsers.Item(0, CuCeRoIn).Value


    , habe ich jetzt einfach den Wert der Zellen in die Textfelder kopiert.
    Und statt des Indexes welchen ich mit "0" angegeben habe, kann ich ja einfach den Spaltennamen angeben.
    Den Index kann ich nur bei der ID verwenden, da diese Spalte ausgeblendet ist und der Nutzer diese nicht verschieben kann.
    Da ich aber nicht weiß, welcher Index zum Beispiel die Spalte FIRST_NAME hat, weil diese verschoben werden kann, nehme ich halt den Spalten Namen.