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?
risposta
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?
Di seguito sono elencate le proprietà importanti per voi.
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 ("").
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.
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
Eventuali duplicati di [Popolare un ComboBox utilizzando C#] (http://stackoverflow.com/questions/2417960/populating-a-combobox-using-c-sharp) –