2017-04-25 1 views
0

SQL에서 콤보 상자를 채우려고하는데 첫 번째 상자에서 항목을 선택하면 두 번째 상자에서 옵션이 제한됩니다. 주먹 상자에는 선택된 인덱스 변경 이벤트가 있지만 결과를 제한하는 방법을 파악할 수 없습니다. 여기 이전 콤보 상자를 기반으로 결과를 표시하는 목록 상자를 얻는 방법.

내가 무엇을 가지고 :

private void cb_college_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     lb_allMajors.Items.Clear(); 
     lb_allMajors.Items.Add(cb_college.SelectedIndex); 
    } 


private void populateMajors() 
    { 
     try 
     { 
      string SQL; 
      SQL = "SELECT DISTINCT major_name FROM majors"; 

      using (SqlConnection conn = new SqlConnection(connectionString)) 
      { 
       SqlCommand command = new SqlCommand(SQL, conn); 
       conn.Open(); 
       SqlDataReader reader = command.ExecuteReader(); 
       while (reader.Read()) 
       { 
        lb_allMajors.Items.Add(reader.GetString(0)); 
       } 
      } 
     } 
     catch (SqlException err) 
     { 
      MessageBox.Show(err.Message); 
     } 
    } 

데이터베이스의 메이저 리그 테이블의 각 주요는 대학 테이블에 연결하는 대학 ID 열이 있습니다. 따라서 대학 (예 : 비즈니스)을 선택하면 주요 비즈니스 팀에서 비즈니스 전공 과정 만 보여주기를 바랍니다.

+0

검색 ** winforms 계단식 콤보 상자 ** 및 [c-sharpcorner]와 같은 많은 결과 (http://www.c-sharpcorner.com/UploadFile/009464/cascading-combobox-in-windows-application -using-C-Sharp /) –

+0

어디에서 문제가 있습니까? –

답변

0

나는 정확히 무엇을했는지 또는 예제가 보여주고있는 것에 100 % 아니지만 대학 번호 나 SelectedIndex가 포함 된 매개 변수를 사용하여 populateMajors() 메서드를 제공하면된다고 생각합니다. 사용. 예를 들어

:

private void cb_college_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    populateMajors(cb_college.SelectedIndex); // OR More likely Get College ID from Combobox 
} 

private void populateMajors(int CollegeId) 
{ 
    try 
    { 
     string SQL; 
     SQL = "SELECT DISTINCT major_name FROM majors WHERE <yourcollegeindexcol> = " + CollegeId; 

     using (SqlConnection conn = new SqlConnection(connectionString)) 
     { 
      SqlCommand command = new SqlCommand(SQL, conn); 
      conn.Open(); 
      SqlDataReader reader = command.ExecuteReader(); 
      while (reader.Read()) 
      { 
       lb_allMajors.Items.Add(reader.GetString(0)); 
      } 
     } 
    } 
    catch (SqlException err) 
    { 
     MessageBox.Show(err.Message); 
    } 
} 

내가 selectedIndex의 전송 할 수있는 권리 매개 변수임을 의심하지 않지만, 당신은 사진을 찍어.

ComboBox.DataSource 속성을 사용하는 것이 좋습니다. Items.Add가 아닌 ComboBox.DataSource를 온라인으로 검색하여 사용법을 확인하십시오.

+0

나는 대학생 ID를 콤보 박스로 만드는 것에 대해 당신이 맞다고 생각합니다. 하지만 콤보 상자에 해당 ID가 포함되어 있는지 확인해야합니다. – secretlygayfrog

+0

ComboBox.DataSource가 제공되는 곳입니다. 예 : 대학 데이터베이스 데이터를 SQL DB에서 가져 와서 CollegeId 및 CollegeName 열이있는 DataTable에 저장할 수 있습니다. 그런 다음 cb_college.DisplayMember를 "CollegeName"으로 설정하고 cb_college.ValueMember를 "CollegeId"로 설정합니다. 그런 다음 cb_college.SelectedValue에는 CollegeId가 포함되지만 목록에 표시된 이름입니다. –

관련 문제