根据用户选择动态更新组合框

本文关键字:更新 组合 动态 选择 用户 | 更新日期: 2023-09-27 18:25:27

我不确定回发在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();
}

根据用户选择动态更新组合框

Winforms不包含post-back。您需要绑定到SelectedIndexChanged(或ItemValue)事件来筛选第二个下拉列表。

示例:

    public void FillFirstChildren()
    {
        //Your Fill Logic Here
        ...
        //Call FillSecondChildren on selection change
        firstChild_drop.SelectedIndexChanged += (o, e) => FillSecondChildren();
    }