Combobox und Datagridview mit Query aus typsiertem Dataset befüllen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Combobox und Datagridview mit Query aus typsiertem Dataset befüllen

    Ich habe ein typisiertes Dataset und möchte eine Combox mit einer Kombination aus 2 Feldern in der Kombination Nachname & ", " & Vorname befüllen.
    Das ganze wollte ich über eine Bindingsource realisieren, da ich dann ID_Nutzer als Valuemember zuweisen kann.
    Bei manuellem Befüllen über eine Schleife kann ich ja keinen Valuemember hinzufügen.
    tbl_Nutzer
    ID_Nutzer
    Nachname
    Vorname

    Ähnlich geartet ist das Problem bei einem Datagridview wo ich 2 Tabellen kombinieren muß.
    In beiden Fällen hätte ich unter VB6 eine Query und eine Schleife eingesetzt.
    Wie läßt sich das unter vb.net am effektivsten realisieren?
    tbl_Ducker
    ID_Drucker tbl_Arbeitsplatz
    ID_Apl--------------------- ID_Apl
    Druckername Arbeitsplatz
    Zeige einmal ein Bild von deinem DataSet-Designer mit deinen Tabellen, dann kann man sich davon besser etwas vorstellen...
    DataGridView und Combobox haben eine DataSource-Eigenschaft, die bedient werden will.
    Man schaltet zwischen Control und Daten normalerweise eine Bindingsource, mit der man dann Daten Filtern, Sortieren und Datensätze auswählen kann.

    Schoofi schrieb:

    Ich habe ein typisiertes Dataset und möchte eine Combox mit einer Kombination aus 2 Feldern in der Kombination Nachname & ", " & Vorname befüllen.
    Das ganze wollte ich über eine Bindingsource realisieren, da ich dann ID_Nutzer als Valuemember zuweisen kann.
    Dazu gibt es die tbl_NutzerBindingsource, die im Komponentenfach generiert sein muss und die verwendest du für die DataSource der Combobox. DisplayMember- und ValueMember stellst du entsprechend deinen Feld ein.

    Schoofi schrieb:

    Ähnlich geartet ist das Problem bei einem Datagridview wo ich 2 Tabellen kombinieren muß.
    Da möchtest du wahrscheinlich ein DGV an die tbl_Arbeitsplatz binden und im DGV eine DatgridViewComboboxColumn erstellen , die dir die verfügbaren Drucker von der tbl_Drucker zum Auswählen anzeigen soll?

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

    Wie bekomme ich aber mehrere Felder in den Displaymember ? Der soll ja aus Nachname und Vorname zusammengesetzt werden. Bis jetzt habe ich immer nur die Möglichkeit gefunden ein Feld zuzuweisen.

    Bei den Druckern sollte das Datagridview eine Spalte mit Druckername und eine mit Arbeitsplatz anzeigen ohne den Arbeitsplatz vorauszuwählen.
    Die Anzahl ist überschaubar, so das ich nur sehen möchte, wo welcher Drucker steht.

    Schoofi schrieb:

    Wie bekomme ich aber mehrere Felder in den Displaymember ? Der soll ja aus Nachname und Vorname zusammengesetzt werden. Bis jetzt habe ich immer nur die Möglichkeit gefunden ein Feld zuzuweisen.
    Ja, man kann immer nur ein Feld zur Anzeige bringen.
    Da muss man eine extra Spalte in der Tabelle erstellen und in die Expression-Eigenschaft mit einer Formel die 2 Felder kombinieren. Dieses Feld kannst du dann als Displaymember verwenden.
    Siehe zu berechnete Spalten Genaueres im folgenden Link: msdn.microsoft.com/de-de/libra…expression(v=vs.110).aspx
    Edit: @xtts02 erwähnte es schneller...

    Schoofi schrieb:

    Bei den Druckern sollte das Datagridview eine Spalte mit Druckername und eine mit Arbeitsplatz anzeigen ohne den Arbeitsplatz vorauszuwählen.
    Die Anzahl ist überschaubar, so das ich nur sehen möchte, wo welcher Drucker steht.
    das geht genauso gut als berechnete Spalte, nur musst du da in der Formel auf die andere Tabelle verweisen (siehe angegebene MSDN-Verknüpfung)
    Es gibt auch ein TUT von @ErfinderDesRades dazu...


    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „VB1963“ ()

    Danke, da hatte ich immer völlig falsche Wege gesucht, gut das es Euch gibt.

    Bei den Druckern habe ich es allerdings doch über einen Tableadapter gelöst, da ich nur 2 Felder aus 2 verschiedenen Quellen benötigte.
    Sonst hätte ich im Datagridview zuviel ausblenden müssen.
    Oder geht das auch cleverer ?
    Geht doch auch via berechnete Spalte (siehe Post #7 vorletzter Satz)...

    VB.NET-Quellcode

    1. Expression = Parent(tbl_ArbeitsPlatz_tbl_Drucker).Arbeitsplatz

    Der Name der Verknüpfung müsste bei dir so generiert werden.
    Ist unübersichtlich: da wäre eine bessere Benamung deiner Tabellen zu überlegen - lasse dort die Präfixe 'tbl_' einfach weg! Ist doch eh klar, dass es eine Tabelle ist...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „VB1963“ ()

    Ich habe auf einem Klassenmodul das das typisierte Dataset beinhaltet, mit rechter Maustaste hinzufügen einen Tableadapter hinzugefügt und auf dem die entsprechende SQL Abfrage eingestellt.
    Mit hinzufügen Abfrage klappte das eigenartigerweise nicht, die war hinterher nicht ansprechbar.
    Den Weg habe ich über die msdn gefunden und der funktioniert auch wenn es mir nicht ganz logisch erscheint.
    ah - sorry.
    Ich kapiere jetzt erst, dass es garnet ums Drucken geht, sondern du hast eine Tabelle namens Drucker! 8o
    Jo, lass die Finger weg von Tableadapter selber basteln.
    Das Ausblenden einer Spalte im DGV erfordert (im Spalten-Editier-Dialog) einen Klick auf den "Entfernen"-Button, also bei 7 Spalten 7 Klicks - das ist doch durchaus machbar, oder?

    Falls du Probleme hast, den Spalten-Editier-Dialog zu finden, inne 4Views-Videos kommt der oft vor, und fast immer auch zum Entfernen von Spalten: vier Views-Videos
    also ab Film3 sollte das immer vorkommen.