2013-07-30 64 views
1

我不確定在WinForms上如何回發工作,但我想要允許ComboBox根據用戶選擇進行更新。基於用戶選擇動態更新組合框

當前當我更改我的第一個ComboBox的選擇時,它不會更改第二個下拉列表中的項目。 (默認只顯示第一項)

O可以通過哪些方式改變這種情況?

代碼我有什麼:

public ContentUploader() 
     { 
      InitializeComponent(); 

      using (SqlConnection con = new SqlConnection(conString)) 
      { 
       con.Open(); 
       using (SqlDataAdapter sda = new SqlDataAdapter("SELECT ... re.OverallID = 1", conString)) 
       { 
        DataTable dt = new DataTable(); 
        sda.Fill(dt); 

        sections_drp.ValueMember = "ID"; 
        sections_drp.DisplayMember = "DisplayName"; 
        sections_drp.DataSource = dt; 
       } 
      } 
      sections_drp.SelectedIndexChanged += (o, e) => FillFirstChildren(); 
     } 
     public void FillFirstChildren() 
     { 
      firstChild_drp.Items.Add("Select Item"); 
      firstChild_drp.SelectedIndex = 0; 

      string sectionId = sections_drp.SelectedValue.ToString(); 

      using (SqlConnection con = new SqlConnection(conString)) 
      { 
       con.Open(); 
       using (SqlDataAdapter sda = new SqlDataAdapter("SELECT ... em.ItemID = ("+ sectionId +")", conString)) 
       { 
        DataTable dt = new DataTable(); 
        sda.Fill(dt); 

        firstChild_drp.ValueMember = "ID"; 
        firstChild_drp.DisplayMember = "DisplayName"; 
        firstChild_drp.DataSource = dt; 
       } 
      } 
      FillSecondChildren(); 
     } 
+0

第一個組合的用途selected_index_change事件以填充第二 –

+0

@kostasch。如果我有多個組合,我會填充每個上一個的selected_index_change事件? – Masriyah

+0

你只是回答你的問題:) –

回答

2

Winforms不包含交回來。您需要綁定SelectedIndexChanged(或ItemValue)事件以過濾第二個下拉菜單。

實施例:

public void FillFirstChildren() 
    { 
     //Your Fill Logic Here 
     ... 

     //Call FillSecondChildren on selection change 
     firstChild_drop.SelectedIndexChanged += (o, e) => FillSecondChildren(); 
    } 
+0

我是否在'using'語句和'firstChild_drp.DataSource = dt'之後放置'firstChild_drop.SelectedIndexChanged + =(o,e)=> FillSecondChildren();? – Masriyah

+0

在該方法的最後。 – Khan