2017-04-25 12 views
0

SQLからコンボボックスを作成しようとしていますが、最初のボックスから項目を選択すると、2番目のボックスでオプションが制限されます。最初のボックスには選択されたインデックス変更イベントがありますが、結果を制限する方法はわかりません。ここで以前のコンボボックスに基づいて結果を表示するリストボックスを取得する方法。

は私が持っているものです。

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%ではありませんが、大学のIDまたは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がここにあります。例:CollegeIDとCollegeNameの列を持つDataTableにSQL DBから店舗データを取得できます。次に、cb_college.DisplayMemberを "CollegeName"に設定し、cb_college.ValueMemberを "CollegeId"に設定します。次に、cb_college.SelectedValueにはCollegeIdが含まれますが、リストに表示される名前です。 –

関連する問題