2016-10-28 3 views
2

Ich habe einen ComboBox, die mit Elementen aus meiner Datenbank gefüllt wird. Ich versuche, die ID des Artikels zu erhalten, die in den ComboBox ausgewählt ist, aber nichts, was ich versucht habe, scheint zu funktionieren. DieseID von Element in ComboBox ausgewählt Get

int id = cbbilar.SelectedIndex + 1; 

ist, wie ich es jetzt haben, ist es sehr ineffizient und nicht mehr funktioniert, wenn die ersten Elemente in der Datenbank

var cars = (from z in db.Bilar 
      select new { Value = z.Id, Names = z.Marke.Namn + " " + z.Namn }).ToList(); 
cbbilar.DataSource = cars; 
cbbilar.DisplayMember = "Names"; 
cbbilar.ValueMember = "Value"; 
cbbilar.SelectedIndex = 0; 

Dies ist der Code für meine Combobox entfernt werden. Wie bekomme ich es die ID der SelectedItem holen?

Antwort

1

Sie benötigen SelectedValue und int.TryParse Methode zu verwenden. Wie folgt aus:

int id; 
bool result = int.TryParse(cbbilar.SelectedValue.ToString(), out id); 
+0

Können Sie nicht nur werfen SelectedValue direkt, da es als int übergeben int? –

+0

@IanofOz Der 'SelectedValue' ist vom Typ' Objekt'. –

+0

Dies scheint es behoben zu haben! Danke vielmals! Wie kommt es, dass ich es auf diese Weise schreiben musste, anstatt einfach nur "int id = int.Parse (cbbilar.SelectedValue.ToString());'? –

0

Wann immer ich den SelectedIndex Wert bin Grabbing, mache ich so die id in einer anderen DataBase aus verschiedenen Gründen zu platzieren. Ich habe den TryParse benutzt, um diese Aufgabe zu erledigen, aber die folgende Zeile ist so einfach wie es geht, indem man sie als String anstatt als Parting zu einem Int zieht. Hier

string id = combobox.SelectedValue.ToString(); 
0

ist, was ich habe getan:

comboBoxPickupLoc.DataSource = pickupLocationRepo.GetPickupLocations(); 
 
comboBoxPickupLoc.DisplayMember = "LocationName"; 
 
comboBoxPickupLoc.ValueMember = "Id"; 
 
comboBoxPickupLoc.SelectedIndex = -1;

und dann können Sie den ID-Wert erhalten, wie unten gezeigt

object value = comboBoxPickupLoc.SelectedValue; 
 
    MessageBox.Show(value.ToString());

Danke.