Archief - [PROG]C# Waarde uit combobox halen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Shotterke

Legacy Member
Ik heb bijna mijn gip afgewerkt maar ik heb nog een paar problemen.

Zo lukt het niet om een waarde uit een combobox te halen.
Eerst heb ik alle ploegen uit mijn database ingeladen door de volgende code te gebruiken:
Code:

Code:
private void BPloegenLaden()
{
            cboPloeg.BindingContext = new BindingContext();
            cboPloeg.SelectedValue = "Ploegen.PloegId";
            cboPloeg.DisplayMember = "Ploegen.Ploegnaam";
            cboPloeg.DataSource = Variabelen.dsPloegen;
}

En voor de volgende code gebruik ik voor de spelers in te laden:

Code:
Code:

private void cboPloeg_SelectedIndexChanged(object sender, EventArgs e)
{
int ploegid = (int)cboPloeg.SelectedValue;

DataSet dsSpelers = db.CreateTable("SELECT * FROM tblSpeler " +
"Where tblSpeler.PloegId = " + ploegid + " ORDER BY tblSpeler.Spelernaam", "spelers");

     cboBSpeler1.BindingContext = new BindingContext();
     cboBSpeler1.DisplayMember = "spelers.Spelernaam";
      cboBSpeler1.ValueMember = "spelers.SpelerID";
      cboBSpeler1.DataSource = dsSpelers;
}
Maar als ik mijn scouting form open geeft hij de foutmelding:

"Specific cast is not valid" :s

Ik weet niet hoe dit komt omdat ik exact dezelfde code al eens heb gebruikt in een ander form.

De andere foutmelding is eigenlijk van dezelfde aard. Namelijk dat ik geen waarde uit een combobox kan halen :(

Obliv`

Legacy Member
Code:
int ploegid = (int)cboPloeg.SelectedItem;

Hier loopt het waarschijnlijk mis. Je probeert een DataRow te converten naar een int. Terwijl je eigelijk de selectedValue zou moeten opvragen.

Code:
int ploegid = (int)cboPloeg.SelectedValue;

TomWij

Legacy Member
Verder gebruik je in C# beter
Code:
int ploegid = Convert.ToInt32(cboPloeg.SelectedValue);

Shotterke

Legacy Member
Obliv` zei:
Code:
int ploegid = (int)cboPloeg.SelectedItem;

Hier loopt het waarschijnlijk mis. Je probeert een DataRow te converten naar een int. Terwijl je eigelijk de selectedValue zou moeten opvragen.

Code:
int ploegid = (int)cboPloeg.SelectedValue;

Dat was nog een foutje.
Maar eingelijk moet er .SelectedValue staan :p

TomWij zei:
Verder gebruik je in C# beter
Code:
int ploegid = Convert.ToInt32(cboPloeg.SelectedValue);

Dit werkt niet.
Hij geeft een foutmelding op dit lijntje code.

TomWij

Legacy Member
Hmmz, misschien vergis ik me dan of doe ik het zelf verkeerd.
(Denk dat ik eerst naar string en dan naar int verander, stom van me!)

Da Turtle

Legacy Member
SelectedValue geeft soms null terug, 'k weet niet waarom. Je kan proberen met cboPloeg.Items[cboPloeg.SelectedIndex] te gebruiken, maar ik weet niet zeker als dit lukt met data binding.

Shotterke

Legacy Member
Bij mijn eerste fout lukt het niet omdat hij een object niet kan converteren naar een int.

Voor mijn tweede probleem neemt hij de code wel maar krijg ik de volgende foutmelding:

Object reference not set to an instance of an object.

Beguv

Legacy Member
straatloper zei:
Dat was nog een foutje.
Maar eingelijk moet er .SelectedValue staan :p



Dit werkt niet.
Hij geeft een foutmelding op dit lijntje code.

Meestal programmeer ik in vb an dan is het
int ploegid = (int)cboPloeg.SelectedValue.ToString;

Zedd Zorandar

Legacy Member
Code:
private void BPloegenLaden()
{
            cboPloeg.BindingContext = new BindingContext();
            cboPloeg.[B]ValueMember[/B] = "Ploegen.PloegId";
            cboPloeg.DisplayMember = "Ploegen.Ploegnaam";
            cboPloeg.DataSource = Variabelen.dsPloegen;
}

kan dit misschien de oplossing zijn? (zo ff rap uwe post gelezen, uw code ni gedownload)

Shotterke

Legacy Member
Hij geeft nog altijd de foutmelding:

"Object reference not set to an instance of an object."

op het lijntje:

"int ploegid = (int)cboPloeg.SelectedValue;"

Shotterke

Legacy Member
Er mag een slotje op.
Blijkbaar lukt het toch met

Code:
int ploegid = Convert.ToInt32(cboPloeg.SelectedValue);

Geen idee waarom ik de vorige keer een foutmelding kreeg :p

Allemaal bedankt voor de tips en oplossingen :niceone:

TomWij

Legacy Member
Oh, ben blij dat ik deze topic nog eens herlees.
(Ben mijn berichtengeschiedenis aan het bekijken)

Met Convert kan je inderdaad van objecten eender wat maken, volgende keer kan ik het beter lokaal eens proberen in plaats van verbaasd te staan kijken. :)

Het beste is om bij verwarring eens de verschillen tussen Visual Basic, C# en C++ boven te halen om zo duidelijkheid te scheppen in wat je precies moet gebruiken.

Dreamchaser

Legacy Member
TomWij zei:
Met Convert kan je inderdaad van objecten eender wat maken, volgende keer kan ik het beter lokaal eens proberen in plaats van verbaasd te staan kijken. :)

int.Parse en int.TryParse zijn overigens ook nog 2 goede alternatieven voor die Convertklasse.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan