Inhalt von zwei verschiedenen Spalten als DisplayMember

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Jada.

    Inhalt von zwei verschiedenen Spalten als DisplayMember

    Hallo,



    ich lade Daten von einem SQL-Server in verschieden ComboBoxen. Das klappt alles wie gewünscht.

    In der SQL - Datenbank gibt es eine Spalte Name und eine Spalte Vorname.

    Ich würde gerne den Inhalt beider Spalten in der ComboBox zusammen anzeigen, so daß als DisplayMember Name und Vorname angezeigt wird.

    Für eine Spalte benutze ich:

    Quellcode

    1. con.Open()
    2. cbName.DataSource = con.GetDataTable("Select * from Workers", "Workers", Arbeiter)
    3. cbName.DisplayMember = "Name"
    4. cbName.ValueMember = "ArbeiterID"

    Vielen Dank

    liteman
    Hallo,



    das Abfragen der Daten am SQL Server ist nicht mein Problem. Durch "Select * from Workers" frage ich ja alle Daten ab.

    Mein Problem ist nur, wie binde ich zwei Spalten an den DisplayMember der ComboBox?

    Nur die Spalte Name ist kein Problem, nur die Spalte Vorname auch nicht. Ich benötige aber Name und Vorname angezeigt.



    Danke

    liteman
    Beispiel:

    SQL-Abfrage

    1. "SELECT *, CONCAT(Name, Vorname) AS FullName FROM Usertabelle"

    und als Displaymember:

    DisplayMember = "FullName"
    Durch Concat führst du 2 Spalten zu einer zusammen und bennenst se "FullName". Diese weist du dann dem DisplayMember.
    Natürlich heisst das nicht bei jeder DB CONCAT und einige DBs unterstützen das nicht, aber es gibt auch andere Möglichkeiten z.b. durch zusammenführung mit + oder mit & (je nach DB).
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer
    ich krame mal den alten Thread raus, weil ich finde meine Frage passt hier ganz gut rein und was anderes was besser passt habe ich nicht gefunden:

    ich habe hier eine Listbox, deren DatasourceProperty an die BindingSource 'bsPool' gebunden ist. In die soll jeweils ein String nach folgendem Schema eingetragen werden:

    <NachName>, <VorName>

    mein funktionierender Code sieht bisher so aus:

    VB.NET-Quellcode

    1. bsPool.DataSource = From s In ctx.staffs.Local Where s.Aktiv = True

    VB.NET-Quellcode

    1. lbxPool.DisplayMember = "VorName"



    - ctx ist eine automatisch generierte Klasse aus dem Entity Framework
    - staffs ist eine pluralisierte Tabelle names staff
    - staff hat die Felder Aktiv(bool), VorName(String), NachName(String)


    gibt es nun eine Möglichkeit die DisplayMember Property meiner Vorgabe nach entsprechend zu füllen? Ich vermute, ich muss in Richtung von CONCAT bei der LINQ gehen, nur leider komme ich nicht weiter, irgendetwas in meinen Versuchen passt immer nicht in der Syntax der LINQ. Ich schreibe hier absichtlich keinen falschen Versuch rein um möglichst schnell zu einem Ergebnis zu kommen, da ich denke, jemand der meine Frage versteht ist in einer Zeile fertig ;)

    kurz: gleiches Problem wie der TE nur ich möchte es mit LINQ lösen.

    Vielen Dank schon mal