Laden...

Datagridview mit Combobox-Spalte wobei jede Zeile eine eigne Itemliste enthält

Erstellt von christof.k vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.544 Views
C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 16 Jahren
Datagridview mit Combobox-Spalte wobei jede Zeile eine eigne Itemliste enthält

Hallo Zusammen,

ich möchte die Datagridview als Konfigurationstool einsetzen.
Dazu würde ich gerne eine Anzeige mit 2 Spalten erstellen. Soweit so gut.
Erste Spalte soll den Parameter in Textform darstellen, zweite Spalte die Items selbst in einer Combobox.
Nun muss aber die Liste der auswählbaren Items pro Zeile anders sein.
Bisher habe ich nur die Möglichkeit, der gesamten Spalte eine Itemlist zuzuweisen.

Ist meine Idee mit einer DataGridView überhaupt realisierbar? Und wenn ja, wie?

Danke
Christof

140 Beiträge seit 2007
vor 16 Jahren

Salut!

Verwende darür die DataGridViewComboBoxCell-Klasse.

Z.B.:


class YourCell : DataGridViewComboBoxCell
{
    protected override object GetValue(int rowIndex)
    {
        return ...;
    }
}

danach...


YourGridViewColumn.CellTemplate = new YourCell();

-> mehr dazu im MSDN.

Viel Erfolg (mit wenig Aufwand),
Sisyphus

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 16 Jahren

Hallo,

ich verstehe im Moment nicht, wie ich damit die Auswahl der Combobox der Zelle verändern kann.

GetValue soll laut MSDN ja nur den Zell-Wert zurückgeben, nicht die Auswahl.

Irgendwie fehlt mir da noch ein Bit......

Danke
Christof

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 16 Jahren

Hallo,

nach dem Tip habe ich noch weiter gestöbert und die Lösung ist folgende:


            DataGridViewColumn column = dataGridView1.Columns[1];
            DataGridViewComboBoxCell cell = new DataGridViewComboBoxCell();
            cell.Items.AddRange(new object[] {
            "aaa",
            "vvv"});
            column.CellTemplate = cell;

Diese Einstellung gilt dann für alle danach eingefügten Zeilen, d.h. man kann damit nicht eine beliebige Zelle modifizieren, sondern nur bei Erstellung der Zeilen. In meinem Fall ist das aber OK.

Dankeschön nochmal
Christof