2011-09-14 4 views
13

Come posso riempire una casella combinata dal database sql (tabella studenti con ID e colonne nome), il testo visualizzato rappresenta il nome di uno studente e il valore dell'elemento di combobox è l'id per lo studente che quando ottengo il valore della casella combinata Ottero 'il valore idCome compilare la casella combinata di C# windows?

+1

Eventuali duplicati di [Popolare un ComboBox utilizzando C#] (http://stackoverflow.com/questions/2417960/populating-a-combobox-using-c-sharp) –

risposta

3

Per prima cosa devi capire come recuperare i dati dal DB, ma presumo che tu lo sappia o intendi fare un'altra domanda a riguardo. Da lì, la soluzione migliore è vincolare alcune raccolte allo ComboBox. Here è un esempio di come farlo con uno DataSet. È inoltre possibile eseguire il binding a List<T> o altro IEnumerable<T>, il che avrebbe più senso se si intende utilizzare LINQ per ottenere i dati. Here è una domanda qui su SO su come legare un List a un ComboBox Forse potresti dirci come intendi ottenere i dati in modo da poterti dare una risposta più personalizzata?

26

Di seguito sono elencate le proprietà importanti per voi.

ComboBox.DataSource Property

Una sorgente dati può essere un database, un servizio Web o un oggetto che può successivamente essere utilizzato per generare controlli data-bound. Quando è impostata la proprietà DataSource , la raccolta degli articoli non può essere modificata.

ComboBox.DisplayMember Property

una stringa che specifica il nome di una proprietà dell'oggetto che si contiene nell'insieme specificato dalla proprietà DataSource. L'impostazione predefinita è una stringa vuota ("").

ComboBox.ValueMember Property

Una stringa che rappresenta il nome di una proprietà dell'oggetto che si contiene nell'insieme specificato dalla proprietà DataSource. L'impostazione predefinita è una stringa vuota ("").

DataTable dataTable = GetDataTable("Select * from Student"); // You have to implement the ways to retrieve data from the database. 
comboBox1.Datasource = dataTable; 
comboBox1.DisplayMember = StudentName; // Column Name 
comboBox1.ValueMember = StuentId; // Column Name 

Ecco un modo, se si desidera aggiungere elementi di programmazione.

private class Item 
{ 
     public string _Name; 
     public int _Id 

     public Item(string name, int id) 
     { 
      _Name = name; 
      _Id = id; 
     } 

     public string Name 
     { 
      get { return _Name; } 
      set { _Name = value; } 
     } 

     public string Id 
     { 
      get { return _Id; } 
      set { _Id = value; } 
     } 
} 

comboBox1.DisplayMember = "Name"; 
comboBox1.ValueMember = "Id"; 

comboBox1.Items.Add(new Item("Student 1", 1)); 
comboBox1.Items.Add(new Item("Student 2", 2)); 
comboBox1.Items.Add(new Item("Student 3", 3)); 

Ci sono vari modi per farlo.

How to: Add and Remove Items from a Windows Forms ComboBox

ComboBox.Items Property

+1

In nell'esempio sopra è necessario aggiungere "{get; set;}" alle proprietà della classe Item "Nome" e "Id", altrimenti la casella combinata mostrerà solo il tipo di oggetto. – wavedrop