2011-09-14 61 views
13

如何從sql數據庫填充組合框(使用id和名稱列的學生表),顯示文本代表學生的名稱,組合框項目的值是該學生的ID,當我獲得值的組合框我會得到的ID值如何填充C#窗體窗體組合框?

+1

[使用C#填充組合框(http://stackoverflow.com/questions/2417960/populating-a-combobox-using-c-sharp) –

回答

3

首先你需要弄清楚你將如何從數據庫中獲取數據,但我會假設你知道或打算提出另一個問題在這方面。從那裏,你最好的選擇是綁定一些收集到ComboBoxHere就是用DataSet這樣做的一個例子。您也可以綁定到List<T>或其他IEnumerable<T>,如果您要使用LINQ來獲取數據,這會更有意義。 Here是一個關於如何綁定ListComboBox的問題也許你可以告訴我們你打算如何獲取數據,以便我們可以給你一個更定製的答案?

26

以下是您的重要屬性。

ComboBox.DataSource Property

數據源可以是一個數據庫,Web服務,或可稍後 被用來生成數據綁定控件的對象。當設置DataSource 屬性時,項目集合無法修改。

ComboBox.DisplayMember Property

該字符串指定被包含在由數據源屬性指定的集合中 的對象屬性的名稱。缺省是 一個空字符串(「」)。

ComboBox.ValueMember Property

表示被包含在由數據源屬性指定的集合中 的對象屬性的名稱的字符串。缺省是 一個空字符串(「」)。

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 

這是一個方式,如果你想通過程序添加項目。

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

這樣做有很多種方法。

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

ComboBox.Items Property

+1

在可能的複製上面的例子中,您需要爲Item類屬性「Name」和「Id」添加「{get; set;}」,否則組合框將僅顯示對象類型。 – wavedrop