2017-07-12 1 views
2

ici est mon code, mais son récupérer uniquement dernier enregistrement pas touscomment remplir combobox avec tous les enregistrements d'une personne de la base de données en fonction de son nom sur la zone de texte?

SqlConnection history= new SqlConnection("Data Source=.;Initial Catalog=db3;Integrated Security=True"); 
       history.Open(); 
       SqlCommand histcmd= new SqlCommand("SELECT salary FROM persontable WHERE (Name = @name)", history); 
       histcmd.Parameters.AddWithValue("@name", checkname.text); 

       SqlDataReader DRhistory= histcmd.ExecuteReader(); 
       if (DRhistory.Read()) 
       { 
        combobox.Text = DRhistory.GetValue(0).ToString(); 


       } 
       history.Close(); 
+0

Il retreives pas durer mais d'abord –

Répondre

3

Vous avez besoin d'une boucle si vous voulez obtenir tous:

List<string> salaryList = new List<string>(); 
while(DRhistory.Read()) 
{ 
    salaryList.Add(DRhistory.GetString(0)); 
} 

Pour remplir une zone de liste déroulante vous pouvez les ajouter dans la boucle approche plus simple:

while(DRhistory.Read()) 
{ 
    comboBox.Items.Add(DRhistory.GetString(0)); 
} 

ou utilisez un BindingSource que vous pouvez assigner la liste comme source de données:

BindingSource bs = new BindingSource(); 
bs.DataSource = salaryList; 
comboBox.DataSource = bs; 
+0

donc je dois changer mon cas à en boucle pour créer une liste, puis remplir combo avec la liste qui est tout? – hamed2011

+0

@ hamed2011: oui, édité ma réponse –

2

En complément @TimSchmelters réponse:

Vous devez également remplir le ComboBox avec les objets du List. La définition de la propriété Text n'ajoute pas l'objet à la collection ComboBoxesItem.

using(SqlConnection history= new SqlConnection("Data Source=.;Initial Catalog=db3;Integrated Security=True")) 
{ 
    history.Open(); 
    SqlCommand histcmd= new SqlCommand("SELECT salary FROM persontable WHERE (Name = @name)", history); 
    histcmd.Parameters.AddWithValue("@name", checkname.text); 
    List<string> salaryList = new List<string>(); 

    using (SqlDataReader DRhistory = histcmd.ExecuteReader()) 
    {  
     while(DRhistory.Read()) 
     { 
      salaryList.Add(DRhistory.GetString(0)); 
     } 
    } 

    combobox.Items.AddRange(salaryList.ToArray()); 

    history.Close(); 
} 
+0

merci beaucoup les deux les gars de vous! ça a marché comme du charme! – hamed2011