2011-09-14 3 views
13

콤보 박스를 SQL 데이터베이스 (ID 및 이름 열이있는 students 테이블)에서 채우려면 어떻게해야합니까? 디스플레이 텍스트는 학생의 이름을 나타내고 combobox 항목의 값은 해당 학생의 ID입니다. 콤보 상자의 값 나는 id 값을 얻을 것이다C# windows는 콤보 상자를 채우는 방법?

+1

(http://stackoverflow.com/questions/2417960/populating-a-combobox-using-c-sharp) –

답변

3

먼저 DB에서 데이터를 가져 오는 방법을 알아야하지만, 그 중 하나를 알고 있거나 다른 질문을하기로한다. 그 점에 관해서. 거기에서 가장 좋은 방법은 컬렉션을 ComboBox에 바인딩하는 것입니다. HereDataSet으로이를 수행하는 예입니다. List<T> 또는 기타 IEnumerable<T>에 바인딩 할 수도 있습니다. LINQ를 사용하여 데이터를 가져 오는 것이 더 적합 할 수 있습니다. Here은 여기에 대한 질문입니다. ListComboBox (으)로 바인딩하는 것일 수 있습니다. 데이터를 얻는 방법을 알려 주시면 좀 더 맞춤 답변을 드릴 수 있습니다.

26

다음은 중요한 속성입니다.

ComboBox.DataSource Property

데이터 소스

는 데이터베이스, 웹 서비스 또는 나중에 데이터 바인딩 된 컨트롤을 생성하는 데 사용할 수있는 개체가 될 수 있습니다. DataSource 속성을 설정하면 항목 컬렉션을 수정할 수 없습니다.

ComboBox.DisplayMember Property

DataSource 속성에 의해 지정된 컬렉션에서 포함 객체 속성의 이름을 지정하는 문자열

. 기본값은 빈 문자열 ("")입니다.

ComboBox.ValueMember Property

DataSource 속성에 의해 지정된 컬렉션에서 포함 객체 속성의 이름을 나타내는 문자열

. 기본값은 빈 문자열 ("")입니다. 프로그래밍 방식으로 항목을 추가하려면

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

의 [C 번호를 이용한 콤보 채우기] 가능 중복 위의 예에서는 Item 클래스 속성 인 "Name"과 "Id"에 "{get; set;}"을 추가해야합니다. 그렇지 않으면 콤보 상자에 개체 유형 만 표시됩니다. – wavedrop

관련 문제