2016-07-01 8 views
-1

Hallo Leute, ich habe eine Besitzer-Listbox erstellt, die Avatare und den Namen und die E-Mail-Adresse des Freundes hinzufügt. Ich habe ein paar Probleme. Im Grunde habe ich eine Abfrage, die die Freunde Namen und E-Mail des Freundes erhält und dann wird die Abfrage zu einer Listenfeld-Datenquelle mit 'query.ToList()' hinzugefügt. Was ich versuche, ist für jeden Freund in der Datenquelle, ich will es so, dass es ein neues Listenfeldelement erstellt.C# Wie verwende ich eine foreach-Anweisung mit einer Datenquelle?

Code:

 FriendsLb.DisplayMember = "Display"; 
     FriendsLb.ValueMember = "FirstName"; 
     FriendsLb.ValueMember = "LastName"; 
     FriendsLb.ValueMember = "Email"; 

     var query = from o in Globals.DB.Friends 
        where o.UserEmail == Properties.Settings.Default.Email 
        select new 
        { 
         FirstName = o.FirstName, 
         LastName = o.LastName, 
         Email = o.Email, 

         Display = string.Format(" {0} {1} - ({2})", o.FirstName, o.LastName, o.Email), 
        }; 

     FriendsLb.DataSource = query.ToList(); 

     foreach (object contact in FriendsLb.DataSource)) 
     { 
      FriendsLb.Items.Add(new Contacts(Properties.Resources.avatar, contact.ToString())); 
     } 

Fehler: Error Irgendwelche Ideen? Dieses Prost

ist, was es aussehen sollte, wenn der Code korrekt ist:

Gui

+0

Sie fügen keine Elemente zu Steuerelementen hinzu, die an eine DataSource gebunden sind. Doest 'Contact' enthält die Informationen, die Sie für die Anfrage/DS sammeln? – Plutonix

+0

Haben Sie das 'if (e.index> -1) 'in Ihrem DrawItem-Ereignis von Ihrem letzten gelöschten Post hinzugefügt? – LarsTech

+0

Nein, Kontakt erhält nur die Avatar- und Freunddetails und gibt sie zurück – richardj97

Antwort

0

Sie sollten lieber ein DTO oder ein Ansichtsmodell dann erstellen und verwenden eher wie

public class Contact 
{ 
    public string Firstname {get; set;} 
    public string Lastname{get; set;} 
    public string Email {get; set;} 
    public string Display {get; set;} 
} 

    var query = from o in Globals.DB.Friends 
       where o.UserEmail == Properties.Settings.Default.Email 
       select new Contact 
       { 
        FirstName = o.FirstName, 
        LastName = o.LastName, 
        Email = o.Email, 

        Display = string.Format(" {0} {1} - ({2})", o.FirstName, o.LastName, o.Email), 
       }; 

hinzufügen die Datenquelle zu Ihrem datengebundenen Steuerelement wie unten. Wie bereits erwähnt, können Sie nur eine ValueMember und nicht mehrere haben.

FriendsLb.DataSource = query.ToList(); 
    FriendsLb.DisplayMember = "Display"; 
    FriendsLb.ValueMember = "Email"; 
+0

Danke! Wie würde ich die foreach-Anweisung verwenden, um jeden Freund zur Listbox hinzuzufügen? – richardj97

+0

@ richardj97, Sie nicht wirklich. siehe Bearbeiten in Antwort, wenn das hilft. – Rahul

Verwandte Themen