Laden...

Vorgehensweise bei ComboBoxen im DataGridView

Erstellt von kstanger vor einem Jahr Letzter Beitrag vor einem Jahr 810 Views
K
kstanger Themenstarter:in
99 Beiträge seit 2022
vor einem Jahr
Vorgehensweise bei ComboBoxen im DataGridView

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
A
764 Beiträge seit 2007
vor einem Jahr

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

K
kstanger Themenstarter:in
99 Beiträge seit 2022
vor einem Jahr

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
A
764 Beiträge seit 2007
vor einem Jahr

Eine passende Lösung habe ich ja schon beschrieben, hat das funktioniert? 🙂

K
kstanger Themenstarter:in
99 Beiträge seit 2022
vor einem Jahr

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
A
764 Beiträge seit 2007
vor einem Jahr

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

Was funktioniert denn nicht?

K
kstanger Themenstarter:in
99 Beiträge seit 2022
vor einem Jahr

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
16.806 Beiträge seit 2008
vor einem Jahr

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#)