Combobox in Datagridview

09/02/2009 - 11:44 von hans maier | Report spam
Hallo

ich habe ein Datagridview an eine Tabelle über ODBC gebunden und möchte
in einer Spalte eine combobox anzeigen.
Hier mein Code:

Private Function HoleTitel() As Boolean
Dim SQLString1 As String = "SELECT MIN(XFKTitel) AS
TitelV, XFKSortierungsnummer AS NR FROM FIXTitel WHERE " _
& " XFKKennung = '" & FixBetrieb & "' GROUP BY
XFKSortierungsnummer"
Dim conn1 As New Odbc.OdbcConnection(ODBC_GRS)
daTitel = New Odbc.OdbcDataAdapter(SQLString1, conn1)
Dim cb1 As New Odbc.OdbcCommandBuilder(daTitel)
Try
dtTitel = New DataTable("Titel")
conn1.Open()
daTitel.Fill(dtTitel)
conn1.Close()
bs1.DataSource = dtTitel
Catch ex As Exception
MsgBox(ex.Message)
End Try
HoleTitel = True
End Function

Private Function LadeDaten() As Boolean
HoleTitel()
SQLString = "SELECT XFKKennung as Kennung, XFKKapitel as
Kapitel, XFKTitel as Titel , XFKSortierungsnummer as Sortiernr FROM
FIXKapitel " _
& " WHERE XFKKennung = '" & FixBetrieb & "' ORDER BY
XFKSortierungsnummer"

Dim conn As New Odbc.OdbcConnection(ODBC_GRS)
da = New Odbc.OdbcDataAdapter(SQLString, conn)
Dim cb As New Odbc.OdbcCommandBuilder(da)
Try
LoadForm = True
dt = New DataTable("FixKapitel")
conn.Open()
da.Fill(dt)
conn.Close()
bs.DataSource = dt
With KapitelGrid
.DataSource = dt
.Columns(0).Visible = False 'Kennung nicht sichtbar
.Columns(1).Width = 200
.Columns(2).Width = 200
.Columns.Remove("Titel")
Dim cbc0 As New DataGridViewComboBoxColumn()
cbc0.DataSource = dtTitel ' Detailtabelle
cbc0.DataPropertyName = "Titel" ' Fremdschlüssel
aus Primàrtabelle
cbc0.ValueMember = "nr" ' Primàrschlüssel
aus Detailtabelle
cbc0.DisplayMember = "TitelV" ' Detailanzeige aus
Detailtabelle
cbc0.HeaderText = "Titel"
cbc0.DisplayIndex = 3
cbc0.Width = 60
cbc0.DisplayStyle =
DataGridViewComboBoxDisplayStyle.Nothing
.Columns.Add(cbc0)
End With

LoadForm = False

Catch ex As Exception
MsgBox(ex.Message)
End Try

LadeDaten = True
End Function

Irgendwo muss ein Fehler sein, da ich immer beim Laden die Fehlermeldung
Der Dataviewcomboboxcell-Wert ist ungültig.
Es muss an der Zeile cbc0.Datapropertyname liegen??
Wenn ich diese Zeile lösche, dann wird die Combobox richtig angezeigt,
aber natürlich nicht mehr an die Tabelle gebunden.

Kann mir jemand helfen?

Danke im voraus.

Hans Maier
 

Lesen sie die antworten

#1 Peter Götz
09/02/2009 - 12:51 | Warnen spam
Hallo Hans,

ich habe ein Datagridview an eine Tabelle über ODBC
gebunden und möchte in einer Spalte eine combobox
anzeigen.



Welche Art von Datenbank nutzt Du?

Hier mein Code:

... schnipp ...

Irgendwo muss ein Fehler sein, da ich immer beim Laden
die Fehlermeldung Der Dataviewcomboboxcell-Wert ist
ungültig.
Es muss an der Zeile cbc0.Datapropertyname liegen??
Wenn ich diese Zeile lösche, dann wird die Combobox
richtig angezeigt, aber natürlich nicht mehr an die Tabelle
gebunden.



Die Reihenfolge in Deinem Code

1.) Grid an DataTable binden
2.) Eine der autom. erzeugten Grid-Spalten entfernen
3.) Neue DataGridViewComboBoxColumn erzeugen
und an DGV.Columns-Auflistung anfügen

verursacht Dein Problem.
Schau Dir mal das Beispiel unter

www.gssg.de -> Visual Basic -> VB.net
-> DataGridViewComboBoxColumn

an. In der Sub InitControls wird in diesem Beispiel
die ComboBoxColumn für das Grid und die
Spaltenzuordnung vorgenommen.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen