2011-09-14 39 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