Datagridview Combobox zur Laufzeit füllen

Ferum

Mitglied
Hallo Zusammen,

ich habe da ein kleines Problem mit dem nachträglichen Füllen einer ComboBox in einem DGV. Ich hoffe ihr könnt mir dabei helfen.

Ich erstelle mir eine Zeile mit 3 Comboxboxen im DGV (siehe Code)
Die erste Box wird dabei aus einer MDB-Datei gefüllt.

Code:
Dim dgvRow AsNew DataGridViewRow
Dim cbCell AsNew DataGridViewComboBoxCell
Dim reader As OleDb.OleDbDataReader
 
cbCell.Items.Add("Artikel")
reader = get_Artikel(Anlagenart, Bestelltyp, MG2)
DoWhile reader.Read()
cbCell.Items.Add(reader("Artikel2").ToString)
Loop

dgvRow.Cells.Add(cbCell)
 
cbCell = New DataGridViewComboBoxCell
cbCell.Items.Add("Laenge A")
dgvRow.Cells.Add(cbCell)
 
cbCell = New DataGridViewComboBoxCell
cbCell.Items.Add("Laenge B")
dgvRow.Cells.Add(cbCell)
 
fRabatt.dgArtVerl.Rows.Add(dgvRow)

Nun möchte ich nachdem eine Auswahl in der ersten Combobox stattgefunden hat, aufgrund diesen Wertes die anderen beiden Boxen füllen.
Meine Problem ist allein das nachträgliche Füllen der ComboBox. Bisher habe ich es wie folgt probiert:

Code:
Dim cbCell AsNew DataGridViewComboBoxCell
 
cbCell.Items.Add("Laenge A")
cbCell.Items.Add("1")
cbCell.Items.Add("2")
 
fRabatt.dgArtVerl.Rows(RowIndex).Cells(1).Value = cbCell

Dies führt leider nicht zum gewünschten Erfolg. Ich tappe da gerade etwas im dunkeln. Vielleicht hat einer von euch eine Idee.

Vielen Dank im voraus.
 

Nico Graichen

Erfahrenes Mitglied
Hi

Du fügst einen neue Zelle als Wert einer Bestehenden hinzu. Das kann so nicht funktionieren! ;)
Caste die gewünschte Zelle in eine DataGridViewComboBoxCell und füge dann die Items hinzu. Dies sollte aber auch direkt auf der Column funktionieren.
 

Ferum

Mitglied
Hi Nico,

achso, ich dachte das ist eine Wertzuweisung.

Hast du vielleicht ein kurzes Codebeispiel für mich? Wie ein Cast bei einem DGV aussieht ist mir nämlich nicht klar.
Das DGV ist nämlich noch Neuland für mich. ;)
 

Nico Graichen

Erfahrenes Mitglied
Was hat das mit einem DataGridView zu tun? :confused:
Code:
fRabatt.dgArtVerl.Rows(RowIndex).Cells(1)
Hier erhälst du eine DateGridViewCell zurück. Dies ist die Basisklasse
Diese kannst du in eine DataGridViewComboBoxCell casten

untested:
Code:
Dim cell as DataGridViewComboBoxCell
cell = CType(fRabatt.dgArtVerl.Rows(RowIndex).Cells(1), DataGridViewComboBoxCell)

cell.Items .....
 

Ferum

Mitglied
Hi Nico,

für mich gehört die ComboBox zum DGV und deswegen auch der Cast.
Dann stimmt mein Gedankengang an der Stelle wohl nicht ganz. ;)

Dein Code funktioniert aber. Vielen Dank für die schnelle Hilfe. :)
 

Nico Graichen

Erfahrenes Mitglied
Hi Nico,

für mich gehört die ComboBox zum DGV und deswegen auch der Cast.
Dann stimmt mein Gedankengang an der Stelle wohl nicht ganz. ;)
Die DataGridViewComboBoxCell gehört schon zum DataGridView. Ich meinte damit nur, dass das Casten unabhändig davon ist. Casten ist grob gesagt das umwandeln eines Wertes von einem Typ in einen anderen. (z.b. int in long)
Dein Code funktioniert aber. Vielen Dank für die schnelle Hilfe. :)
Bitte schön! :)