2016-11-24 3 views
0

J'ai un ComboBox mis en place comme suit:C# valeurs différentes de la table dans 1 ComboBox

private void SiteChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (comboBoxSites.SelectedIndex == -1) return; 

    Site site = comboBoxSites.SelectedItem.Value as Site; 

    comboBoxDetector.Items.Clear(); 
    if (site != null) 
    { 
     foreach (Detector detector in site.Detectors) 
     {     
       comboBoxDetector.Items.Add(new ComboBoxItem() 
       { 
        Content = string.Format("{0} ({1})", detector.Track.TrackName, detector.DetectorID), 
        Tag = detector 
       }); 
     } 
    } 
    if (comboBoxDetector.Items.Count > 0) 
     comboBoxDetector.SelectedIndex = 0; 

    btnShow_Click(null, null); 
} 

Maintenant, ce me montre les informations correctes dans la zone de liste déroulante.
Cependant, je veux ajouter 1 chose supplémentaire à la chaîne de contenu.

Je l'ai essayé en ajoutant la requête pour commencer.
Après avoir ajouté la requête mon code ressemble:

foreach (Detector detector in site.Detectors) 
    { 
     LoadOperation<DetectorType> loadOp = context.Load(context.GetEnabledDetectorTypesQuery(detector.DetectorID)); 

     comboBoxDetector.Items.Add(new ComboBoxItem() 
     { 
      Content = string.Format("{0} ({1})", detector.Track.TrackName, detector.DetectorID), 
      Tag = detector 
     }); 
    } 

Maintenant, j'ai ajouté la requête, et il ne donne aucune erreur.
Cependant, je voudrais obtenir des résultats de la requête. J'ai donc ajouté ce code:

foreach (Detector detector in site.Detectors) 
    { 
     LoadOperation<DetectorType> loadOp = context.Load(context.GetEnabledDetectorTypesQuery(detector.DetectorID)); 
     DetectorType type = loadOp.Entities; //Added this 

     comboBoxDetector.Items.Add(new ComboBoxItem() 
     { 
      Content = string.Format("{0} ({1}) {2}", detector.Track.TrackName, detector.DetectorID, type.Description), 
      Tag = detector 
     }); 
    } 

Maintenant Description est la colonne que je veux montrer. Cependant, DetectorType type = loadOp.Entities; est de donner une erreur: cannot implicitly convert type

est-il un moyen pour que je puisse montrer la valeur Description à la ComboBox?

+0

Cette erreur est clairement disant que vous ne pouvez pas implicitement convertir le type de ** loadOp.Entities ** à ** DetectorType **. Si vous êtes absolument sûr que c'est le même type, vous pouvez convertir explicitement les types en utilisant ** DetectorType type = (DetectorType) loadOp.Entities; ** –

+0

@ m.rogalski Je suis sûr à 100% parce que quand je le mets dans un méthode séparée et appelez-le, il me montre les résultats. En changeant aussi à ce que vous avez dit me donne la même erreur. – Mitch

Répondre

0

loadOp.Entities sera de type IEnumerable<DetectorType>. Si vous êtes sûr qu'il y aura seulement une entité retournée (ou vous êtes seulement intéressé par la première entité) alors vous pouvez écrire DetectorType type = loadOp.Entities.FirstOrDefault();