Daten aus Datagridview in Combobox bzw Textbox übergeben

  • VB.NET
  • .NET (FX) 4.0

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von shaun.

    Daten aus Datagridview in Combobox bzw Textbox übergeben

    Hallo zusammen,

    hoffe ihr könnt mir helfen.

    Folgende Problematik:

    Ich habe eine DGV mit zwei Spalten, einmal ein Name und ein Text dazu. Diese Daten speichere ich als Dataset in einer XML Datei die ich auch beim Start lade.

    Das klappt super, falls die XML noch nicht vorhanden ist gebe ich diese aus den Ressourcen vor.

    Nun möchte ich die Daten der ersten Spalte (Name) in eine Combobox1 als Auswahl übergeben.

    Der Anwender soll in der Combobox1 seinen Namen auswählen und für die weitere Verarbeitung brauche ich dann den zugehörigen Text aus der zweiten Spalte in einer Textbox1.

    Hab schon etliches probiert, allerdings komme ich nicht vom Fleck.

    Habt ihr eine Idee ?

    Vielen Dank für eure Unterstützung
    Du kannst deinem Grid eine Spalte vom Typ DataGridComboBoxColumn hinzufügen.

    So in der Richtung etwa, sofern ich es noch richtig im Kopf habe:
    Dim X As New DataGridComboBoxColumn
    X.Name = "SpalteX"
    X.DataSource = DataTableXY
    X.DisplayMember = "Anzeige Feld"
    X.ValueMember = "Wert"
    usw.
    DataGridXY.Columns.Add(X)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Oder eben per Designer (falls Du mit WinForms arbeitest), siehe JoiningView-Video von ErfinderDesRades.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo,

    danke für eure Antworten, komme aber irgendwie nich weiter.

    Ich möchte nicht innerhalb des DGV eine Combobox erstellen sondern seperat.

    Die Daten aus dem DGV sollen nur als Werte für eine Combobox auf einer anderen Form dienen (also als Voreinstellungsliste die vom User bearbeitet werden kann)


    Hab jetzt folgenden Code

    VB.NET-Quellcode

    1. 'DataGridView Spalten erstellen
    2. dt.Columns.Add("Person")
    3. dt.Columns.Add("Übertragungstext")
    4. dt.TableName = "Einstellungen"
    5. Einstellungen.DataSource = dt
    6. 'XML Datei auslesen
    7. dt.ReadXml(datei)
    8. 'Inhalt Spalte Person als Auswahlliste für Combobox1 festlegen
    9. ComboBox1.DataSource = Person


    Sollte das nicht so irgendwie gehen ? also dass ich der combobox einfach sage "nimm als Auswahl die Werte aus der Spalte Person des DGV Einstellungen"

    Grüße
    Brr ... Knoten im Hirn. Ich komm nicht ganz hinterher. Von daher brauch zumindest ich n paar konkrete Infos:
    Du hast ein DGV. Das hat zwei Spalten (Name, Text). Beides sind TextBox-Spalten. Die Daten für die TextBox-Spalten kommen aus einem DataSet, welches die Daten verwaltet. Du hast eine stand-alone-ComboBox. Und wenn Du die Daten im DGV änderst (-> Daten werden hoffentlich auch in den DataSet-Daten geändert, da DGV und DataSet hoffentlich gekoppelt sind), soll sich in der ComboBox was tun? Welche Spaltenänderung soll zu einer ComboBox-Änderung führen? Was soll die ComboBox überhaupt anzeigen? Also wäre gut zu wissen: Sollwert in den DGV-Spalten und ComboBox vor Änderung, Sollwert in den DGV-Spalten und ComboBox nach Änderung im DGV.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hm, hört sich für mich an wie ein unnötig kompliziertes GUI Design. Verstehen tu ich das Bedienkonzept zumindest nicht.

    Ich tippe mal, du hast hier das eigentliche Problem über einen Workaround lösen wollen.

    Wozu benötige ich denn dann das Grid überhaupt? Ich wähle in der ComboBox den User und in einer separaten Textbox schreibe ich dann den zugehörigen Text.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    puh... 8|

    Wow, ich danke euch für die vielen Ideen :thumbup:

    Vielleicht habe ich auch für meine Funktion den total falschen Ansatz.

    @mrMo: ja, sollte ein Workaround sein :)

    Also ich versuche das was passieren soll nochmal zu beschreiben:

    - ich möchte eine Form die aus einer Combobox (name), und einem Text besteht.
    - der User wählt seinen Namen aus der Combobox aus und gibt einen Text ein.
    - das Ganze wird dann per mail gesendet, hierzu benötige ich aber pro Benutzer einen spezifischen Text den ich in der Mail mit versende.

    Prinzipiell funktioniert das schon, allerdings habe ich Namen und auch den zugehörigen spezifischen Text hart im Code verankert was natürlich das Problem aufwirft, kommt ein User dazu muss ich neu programmieren.

    Jetzt habe ich mir folgendes überlegt:

    - zusätzlich zu dieser Form habe ich eine zweite Form(Einstellungen) mit einem DataGridView
    - hier gibt der User seinen (und auch andere Namen ein und in der zweiten Spalte den userspezifischen Text
    - Das Ganze speichere ich in einer xml.
    - nun kann der User seinen Namen mit der Combobox auf Form eins auswählen, der spezifische Text soll dann in einer versteckten Textbox angezeigt werden damit ich diesen für das mail verwenden kann.


    So, ich hoffe mal die Beschreibung ist einigermaßen verständlich ^^


    Vielleicht geht das auch alles einfacher und ich will durch die Brust ins Auge, aber dass war halt mal ein Ansatz.
    Ich will halt zwei Zellen mit denen ich weiter arbeiten kann, eine Combobox mit einer Auswahl an Namen und eine Textbox die mir den entsprechenden userspezifischen Text anzeigt.

    Grüße

    :)

    shaun schrieb:

    ja, sollte ein Workaround sein :)


    Aha, erwischt ;)

    Aber kein Problem, hier helfen dir alle sehr gerne. Ich tät das so (oder ähnlich) machen:

    1. Eine Klasse "Benutzer" erstellen, mit allen Properties die ein Benutzer so haben kann (Name, MailText, usw).
    2. Das Speichern/Laden der angelegten Benutzer würde ich per serialisierung/deserialisierung lösen
    3. Alle User als Objekt an die ComboBox binden
    4. Bei der Auswahl in der Combobox den Benutzer laden und die Daten anzeigen (Textbox)

    Du kannst auch gerne weiter mit einer .XML Tabelle arbeiten, diese dann aber nur im Hintergrund zum Laden/Speichern nutzen, also ohne Grid. Alle anderen Punkte oben wären aber identisch.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    so, war dann eigentlich doch einfacher als gedacht, aber den weg muss ma halt finden :)

    Hab erstmal die Combobox mit dem Datagridview verknüpft.

    VB.NET-Quellcode

    1. 'DGV mit Datatable verknüpfen
    2. DataGridView1.DataSource = dt
    3. ComboBox1.DataSource = dt
    4. ComboBox1.DisplayMember = "Person"
    5. ComboBox1.ValueMember = "Übertragungstext"
    6. ComboBox1.SelectedIndex = -1


    und danach den Wert aus der zweiten Spalte in die Textbox übertragen.

    VB.NET-Quellcode

    1. ​Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    2. Try
    3. 'Wert für Anzeige Übermittlungstext festlegen
    4. TextBox2.Text = ComboBox1.SelectedValue.ToString
    5. Catch ex As Exception
    6. TextBox2.Text = ""
    7. End Try
    8. End Sub



    So klappts :)

    Danke für eure Unterstützung