combobox vullen middels een array

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
Ben nu een tijd bezig om een combobox te vullen
middels een array waarin 2 items moeten komen
a: PersID
b: Naam
Van alles geprobeerd, maar de voorbeelden werken wel.
Alleen die ik wil gebruiken op basis van die voorbeelden niet.
Ik begrijp er nog niets van, maar wil het wel door hebben hoe het werkt.
Middels een zoekfunctie in de db komen er x record terug.
Daarvan wil ik a en b er in krijgen.
Ik zal wel een 2-demensionale array moeten hebben, maar dan toch.
Iemand die mij op weg kan helpen.

Code:
Dim ds As DataSet = New DataSet
        da = New OleDb.OleDbDataAdapter(mySQL, Conn)
        da.Fill(ds, "Zorgboerderij")
        Dim iAantal As Integer = ds.Tables("Zorgboerderij").Rows.Count
        'ds.tables(0).Rows(0).Item(0)
        'ds.tables(0).Rows(0).item(1)
                            'dit is het voorbeeld
        Dim columns() As String = {"1", "2", "3"}
        cboJaar.MaxDropDownItems = columns.Length
        For Each column As String In columns
            cboJaar.Items.Add(column)
        Next
 
Olaa,

Volgens mij moet het een stuk makkelijk kunnen en kan je van een dataset direct naar een combobox. Ik heb de code niet geprobeerd, maar het moet zo ook kunnen:

HTML:
ComboBox1.DataSource = ds.Tables(0)
ComboBox1.ValueMember = "[Id]"
ComboBox1.DisplayMember = "[Value]"


Waarbij je [Id] en [Value] vervangt door de waardes uit je database.

Verder moet je maar eens googelen op vb.net dataset to combobox.
 
For i = 0 To iAantal - 1
With cboJaar
.DataSource = ds.Tables(0)
.DisplayMember = ds.Tables(0).Rows(i).Item(0)
.ValueMember = ds.Tables(0).Rows(i).Item(1)
'.SelectedIndex = 0
End With

Next

foutmelding =Kan niet binden aan het nieuwe waardedeel. Parameternaam: Value
Zit niets anders te doen dan googlen, maar wat ik wil kan ik nog niet vinden
toch bedankt
 
Ha Weswillem,

Ik denk dat het het principe van een object nog niet helemaal door hebt.

ComboBox1.DataSource = ds.Tables(0)
ComboBox1.ValueMember = "[Id]"
ComboBox1.DisplayMember = "[Value]"

In het dik gedrukte gedeelte bind je je datatable al aan het object. En met de andere twee settings Geef je op wat het Id veld is en welke het Value veld is.
Daar hoef je niet meer doorheen te loopen, want het dikgedrukte gedeelte verzorgt de loop al voor je zeg maar.

Onderstaande code moet je verder helpen:

HTML:
cboJaar.DataSource = ds.Tables(0)
cboJaar.DisplayMember = "Id veld uit je database"
cboJaar.ValueMember = "Omschrijving veld uit je database"
cboJaar.SelectedIndex = 0
 
Als valuemember ( omschrijving veld) leeg is gaat hij er door heen
combobox wordt gevuld met 2x tekst -System.Data.DataRowView-
maar als valuemember gevuld is geef het een foutmelding dat hij niet kan
binden aan waardedeel. parameter : NewDisplaymember

Edit:
Ben er uit.
Ik moet de naam van de kolommen vermelden
en niet de waardes uit de tabel
Bedankt voor zover Gsedb
 
Laatst bewerkt:
Als het aantal records 0 is moet de combobox nadat hij gevuld was weer geleegd worden.
ik gebruik hiervoor
cboPersonen.Valuemember=""
cboPersonen.Displaymember=""
alleen de combobox blijft gevuld met -System.Data.DataRowView-
Is dit probleem te tackelen?
 
Dat zal zeker wel te tackelen zijn. Wat bedoel je met als het aantal records 0 is? Dat er geen personen in je database zitten?
 
Yep, Bij de zoekfunctie de waarde x invoeren.
Een naam met daarin een teken/letter x zit niet in de db
komt terug met 0 records terug gevonden.
maar combobox wordt wel gevuld -System.Data.DataRowView-
de namen van de vorige zoek acties zijn dan wel weg.
 
Laatst bewerkt:
Volgens mij blijft dan alles hetzelfde alleen is je dataset leeg.
Die ValueMember en DisplayMember moet je niet leegmaken, want dan weet je control niet meer wat die moet laten zien. Als je met een dataset aan komt zetten die 0 records heeft dan is je combobox alleen leeg.

Ik zal alleen wel die selectedIndex weghalen, omdat er niets te selecten valt.
 
Hij blijft gevuld.
Als iaantal=0 dan is mijn dataset leeg

Code:
Dim ds As DataSet = New DataSet
            ds.Clear()
            da = New OleDb.OleDbDataAdapter(mySQL, Conn)
            da.Fill(ds, "Zorgboerderij")
            Dim iAantal As Integer = ds.Tables("Zorgboerderij").Rows.Count

            If iAantal > 0 Then
                cboPersonen.DataSource = ds.Tables(0)
                cboPersonen.ValueMember = "PersID" 'kolomnaam
                cboPersonen.DisplayMember = "Naam" 'kolomnaam
                cboPersonen.SelectedIndex = 0
            Else
                MsgBox("Er zijn geen records gevonden", vbInformation, "Overzichten")
                '    cboPersonen.ValueMember = ""
                '    cboPersonen.DisplayMember = ""
            End If


Edit:
Ik heb nu
cboPersonen.DataSource = ds.Tables(0)
cboPersonen.ValueMember = "PersID" 'kolomnaam
cboPersonen.DisplayMember = "Naam" 'kolomnaam
cboPersonen.SelectedIndex = 0
na de msgbox geplaatst en warempel hij is leeg.
Als alles zo simpel was, misschien te lang met dit onderwerp bezig geweest
 

Bijlagen

  • test.jpg
    test.jpg
    8,3 KB · Weergaven: 77
Laatst bewerkt:
Haha, het is een bepaalde manier van denken die je even door moet hebben ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan