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:
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
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:
Eine passende Lösung habe ich ja schon beschrieben, hat das funktioniert? 🙂
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?
Ich wollte das mit einer Linq-Abfrage lösen, aber folgender Code funktioniert nicht:
Was funktioniert denn nicht?
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.
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#)
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code