2011-09-14 28 views
13

Làm thế nào tôi có thể điền vào một combobox từ cơ sở dữ liệu sql (bảng học sinh với id, và cột tên), văn bản hiển thị đại diện cho tên của học sinh và giá trị của mục của combobox là id cho sinh viên đó khi tôi nhận được giá trị của combobox Tôi sẽ nhận được giá trị idLàm cách nào để điền vào biểu mẫu cbox của cửa sổ C#?

+1

có thể trùng lặp của [Populating một ComboBox sử dụng C#] (http://stackoverflow.com/questions/2417960/populating-a-combobox-using-c-sharp) –

Trả lời

3

Đầu tiên bạn cần tìm hiểu cách bạn sẽ lấy lại dữ liệu từ DB, nhưng tôi sẽ giả sử bạn biết hoặc có ý định đặt một câu hỏi khác liên quan đến điều đó. Từ đó, đặt cược tốt nhất của bạn là liên kết một số bộ sưu tập với số ComboBox. Here là ví dụ về việc thực hiện điều đó với DataSet. Bạn cũng có thể liên kết với List<T> hoặc IEnumerable<T> khác, điều này sẽ có ý nghĩa hơn nếu bạn định sử dụng LINQ để lấy dữ liệu. Here là câu hỏi ở đây về SO về việc ràng buộc một số List đến ComboBox Có lẽ bạn có thể cho chúng tôi biết cách bạn dự định nhận dữ liệu để chúng tôi có thể cung cấp cho bạn câu trả lời phù hợp hơn?

26

Dưới đây là các thuộc tính quan trọng đối với bạn.

ComboBox.DataSource Property

Một nguồn dữ liệu có thể là một cơ sở dữ liệu, một dịch vụ Web, hoặc một đối tượng mà sau này có thể được sử dụng để tạo ra các điều khiển dữ liệu-ràng buộc. Khi thuộc tính DataSource được đặt, không thể sửa đổi bộ sưu tập mục.

ComboBox.DisplayMember Property

A String xác định tên của một tài sản đối tượng được chứa trong bộ sưu tập được xác định bởi thuộc tính DataSource. Giá trị mặc định là một chuỗi trống ("").

ComboBox.ValueMember Property

Chuỗi đại diện cho tên của một tài sản đối tượng được chứa trong bộ sưu tập được xác định bởi thuộc tính DataSource. Giá trị mặc định là một chuỗi trống ("").

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 

Dưới đây là một cách nếu bạn muốn thêm các mục lập trình.

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

Có nhiều cách để thực hiện việc này.

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

ComboBox.Items Property

+1

Trong ví dụ trên bạn cần thêm "{get; set;}" vào thuộc tính của lớp Item "Name" và "Id" nếu không hộp kết hợp sẽ chỉ hiển thị loại đối tượng. – wavedrop

Các vấn đề liên quan