Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Vorgehensweise bei ComboBoxen im DataGridView
kstanger
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

Vorgehensweise bei ComboBoxen im DataGridView

beantworten | zitieren | melden

Hallo,

ich habe ein DataGridView (DGV), welches über eine BindingSource an eine Liste von Objekten angebunden ist. In dem DGV habe ich eine Spalte mit Comboboxen die alternativ an eine Liste von Objekten1 oder an eine Liste von Objekten 2 angebunden ist. In einer weiteren Spalte habe ich ein Enum mit den Werten Liste1 und Liste 2. Wenn der User in einer Zelle dieser Spalte Liste 1 auswählt, soll die Combobox mit der Liste von Objekten 1 in dieser Zeile angebunden werden. Wenn der User in einer anderen Zelle Liste 2 auswählt, soll die Combobox mit der Liste von Objekten 2 in dieser Zeile angebunden werden.
Wie programmiert man so etwas?
Als Idee habe ich:
- ComboBoxen zur Laufzeit definieren.
- Per Eventhandler in der Enum-Zelle die entsprechende Combobox auswählen
Karl Stanger
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 679

beantworten | zitieren | melden

Hallo kstanger

Deine Aufgabenstellung ist nicht richtig gut erklärt, dass könnte noch klarer werden. Eventuell auch mit etwas Code. Les das mal als jemand, der deinen Code nicht kennt.

Zum Problem:
Die Liste mit Objekten in deinem ViewModel, an die die ComboBoxen gebunden sind, könnten jeweils Objekte1 oder Objekte2 zurückgeben, in Abhängigkeit von Property in dem List1 oder Liste2 eingestellt ist.

Gruß
Alf
private Nachricht | Beiträge des Benutzers
kstanger
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

beantworten | zitieren | melden

Ich versuche eine andere Erklärung:
mein DGV hat 5 Spalten. In der Spalte 2 können nur die Werte "Liste1" oder "Liste 2" stehen. In der Spalte 3 steht eine ComboBox. Diese hat für jede Zeile entweder die Werte der Liste 1 oder die Werte der Liste 2. Und zwar gilt folgendes:
- wenn Spalte 2 Wert = "Liste 1", dann stehen in der ComboBox in Spalte 3 die Werte der Liste 1
- wenn Spalte 2 Wert = "Liste 2", dann stehen in der ComboBox in Spalte 3 die Werte der Liste 2
Ich hoffe, das macht die Sache etwas klarer.
Karl Stanger
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 679

beantworten | zitieren | melden

Eine passende Lösung habe ich ja schon beschrieben, hat das funktioniert?
private Nachricht | Beiträge des Benutzers
kstanger
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

beantworten | zitieren | melden

Ich wollte das mit einer Linq-Abfrage lösen, aber folgender Code funktioniert nicht:


            var timingQuery =
                from tq in Timings
                join lq in Leds on tq.Nummer equals lq.Nummer
                where tq.Typ.Equals(Lichtquelle.Led)
                join rq in Relaises on tq.Nummer equals rq.Nummer
                where tq.Typ.Equals(Lichtquelle.Relais)
                select tq;
            BindingSourceTiming.DataSource = timingQuery.ToList();
Geht das überhaupt mit Linq?
Karl Stanger
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 679

beantworten | zitieren | melden

Zitat von kstanger
Ich wollte das mit einer Linq-Abfrage lösen, aber folgender Code funktioniert nicht:

Was funktioniert denn nicht?
private Nachricht | Beiträge des Benutzers
kstanger
myCSharp.de - Member



Dabei seit:
Beiträge: 79

Themenstarter:

beantworten | zitieren | melden

Irgendwie müsste doch das erste join mit dem ersten where gruppiert werden, und das zweite join mit dem zweiten where. Würde das zweite where sich auf das erste join beziehen, wäre das Ergebnis falsch.
Karl Stanger
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.183

beantworten | zitieren | melden

Weiß nich ob Du das falsche meinst oder einfach die falschen Begriffe nutzt, aber ein reines inner-join ist kein gruppieren, sondern ein zusammenfassen.
Perform inner joins (LINQ in C#)

Willst Du ein gruppieren, dann musst Du auch mit den group Operationen arbeiten; das heisst das join braucht ein into
Perform grouped joins (LINQ in C#)
private Nachricht | Beiträge des Benutzers