2011-09-14 15 views
13

W jaki sposób można wypełnić combobox z bazy danych sql (tabela uczniów z identyfikatorem i kolumnami nazw), tekst wyświetlany reprezentuje nazwę ucznia, a wartość elementu combobox jest identyfikatorem dla tego ucznia, który po otrzymaniu wartość combobox otrzymam wartość identyfikatoraJak zapełnić okno C# formy combobox?

+1

Możliwe duplikat [wypełniania ComboBox C#] (http://stackoverflow.com/questions/2417960/populating-a-combobox-using-c-sharp) –

Odpowiedz

3

Po pierwsze musisz dowiedzieć się, jak masz zamiar odzyskać dane z DB, ale zakładam, że albo to wiesz, albo zamierzasz zadać inne pytanie w związku z tym. Od tego momentu najlepiej jest powiązać kolekcję z ComboBox. Here jest przykładem wykonania tego z DataSet. Możesz także powiązać z List<T> lub innym IEnumerable<T>, co ma więcej sensu, jeśli zamierzasz użyć LINQ do uzyskania danych. Here jest tutaj pytanie na temat wiązania List do ComboBox Być może możesz nam powiedzieć, w jaki sposób masz zamiar uzyskać dane, abyśmy mogli dać ci bardziej dopasowaną odpowiedź?

26

Poniżej znajdują się najważniejsze właściwości dla ciebie.

ComboBox.DataSource Property

Źródłem danych może być bazą danych, usługi sieci Web lub obiekt, który może później zostać wykorzystane do generowania danych związana kontroli. Po ustawieniu właściwości DataSource kolekcja elementów nie może być modyfikowana.

ComboBox.DisplayMember Property

ciąg znaków określający nazwę właściwości obiektu, który jest zawarty w zbiorze określonej przez właściwość DataSource. Wartością domyślną jest pusty ciąg znaków ("").

ComboBox.ValueMember Property

łańcuch znaków reprezentujący nazwę właściwości obiektu, który jest zawarty w zbiorze określonej przez właściwość DataSource. Wartością domyślną jest pusty ciąg znaków ("").

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 

Oto jeden sposób, jeśli chcesz dodać elementy programowo.

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)); 

Istnieje wiele sposobów na zrobienie tego.

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

ComboBox.Items Property

+1

W powyższy przykład musisz dodać "{get; set;}" do właściwości klasy Item "Name" i "Id", w przeciwnym razie pole kombi wyświetli tylko typ obiektu. – wavedrop