Skall fylla en combocox med information från en databas men när man öppnar comboboxen så är den vit men antalet rader stämmer. Lägger jag till ytterliggare en rad i tabellen som datat hämtas från så utökas comboboxen med en rad. Problemet är som sagt att det inte skrivs ut någon text. Hoppas att någon kan hjälpa mig. Här kommer koden: Hej! Hur gör jag för att skapa en ComboBoxItem? När jag ändrar ComboBox till ComboBoxItem så får jag fel i Visual Studio (Type 'ComboBoxItem' is not defined) Hej!Problem med att fylla combobox
Private Sub LoadPersoner()
Dim oOleDbConn As OleDbConnection
Dim oOleDbDa As OleDbDataAdapter
Dim oOleDbCmd As OleDbCommand
Dim odtDataTable As DataTable
Dim odrDataRow As DataRow
Dim oitmx As ComboBox
Dim strProvider As String = " "
Dim strFileSource As String = " "
Dim strSQL As String = " "
Dim intRaknare As Integer
Dim intAntalRader As Integer
strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strFileSource = Application.StartupPath & "\DATABAS.mdb"
cmbPersoner.Items.Clear()
oOleDbConn = New OleDbConnection
oOleDbConn.ConnectionString = strProvider & strFileSource
oOleDbConn.Open()
strSQL = "SELECT ID, Namn "
strSQL &= "FROM Personer"
strSQL &= "ORDER BY Namn ASC;"
oOleDbCmd = New OleDb.OleDbCommand(strSQL, oOleDbConn)
oOleDbDa = New OleDb.OleDbDataAdapter
oOleDbDa.SelectCommand = oOleDbCmd
odtDataTable = New DataTable
oOleDbDa.Fill(odtDataTable)
intAntalRader = odtDataTable.Rows.Count
For intRaknare = 0 To intAntalRader - 1
odrDataRow = odtDataTable.Rows.Item(intRaknare)
oitmx = New ComboBox
With oitmx
.DisplayMember = odrDataRow.Item("Namn")
.ValueMember = odrDataRow.Item("ID")
End With
cmbPersoner.Items.Add(oitmx)
oitmx = Nothing
Next
oOleDbConn.Close()
End SubSv: Problem med att fylla combobox
För det första undrar jag varför du skapar en ny combox för varje omgång i loopen? Du ska ju skapa en ComboBoxItem, inte en ny ComboBox, hoppas du förstår skillnaden mellan dem.
Du behöver bara skapa en combox _en_ gång.
Sen använder du din DataTable som DataSource för comboxen.
cmbPersoner.DataSource = odtDataTable
cmbPersoner.DisplayMember = "Namn"
cmbPersoner.ValueMember = "ID"
cmbPersoner.DataBind()
Och om du har lagt till poster i databasen behöver du bara skriva:
cmbPersoner.Datasource = Nothing
cmbPersoner.DataSource = odtDataTable
cmbPersoner.DataBind()
Då slipper du loopa igenom hela din DataTable och lägga till varje item för sig. DisplayMember och ValueMember anger bara vilka kolumner i din DataSource som ska användas, alltså namnen på kolumnerna, inte deras innehåll.
Varför det inte visas någon text är ju då förstås att det inte finns några kolumner som heter det du anger.
mvh Per
Sv:Problem med att fylla combobox
Sv: Problem med att fylla combobox
Ursäkta, skrev lite fel i mitt förra inlägg, du behöver alltså inte skapa några objekt av klassen ComboBoxItem eftersom du binder din ComboBox direkt till din DataTable och alla items läggs då till automatiskt.
Annars har du ComboBoxItem finns för övrigt namespace System.Windows.Controls (om du skulle behöva den klassen nån gång).
mvh Per