C# 在清除c中的一个下拉列表后重新加载所有下拉列表

C# 在清除c中的一个下拉列表后重新加载所有下拉列表,c#,C#,所以,这是我的问题 我在屏幕上有四个下拉列表,所有四个都是在屏幕加载时加载的,也就是当我更改第一个组合框时,所有三个都是使用selectedindex方法加载的,这方面没有问题 但是,当我手动清除第一个组合框时,其余三个组合框将保留与以前相同的值,我无法重置它们。有什么建议吗 private void comboBox_commodity_SelectedIndexChanged(object sender, EventArgs e)

所以,这是我的问题 我在屏幕上有四个下拉列表,所有四个都是在屏幕加载时加载的,也就是当我更改第一个组合框时,所有三个都是使用selectedindex方法加载的,这方面没有问题

但是,当我手动清除第一个组合框时,其余三个组合框将保留与以前相同的值,我无法重置它们。有什么建议吗

                private void comboBox_commodity_SelectedIndexChanged(object sender, EventArgs e)
                    {

                        //filter stat type
                        if (!comboBox_commodity.Text.Equals(""))
                        {
                            statTypes = new List<string>();
                            foreach (string groupID in groupIds)
                            {
                                string sql = "select [ERSStatisticType_Attribute] from " + schemaName + "ERSStatisticType_LU " +
                                    "WHERE ERSStatisticType_ID IN (SELECT DISTINCT[ERSCommodity_ERSStatisticType_ID] FROM  "
                                    + schemaName + "[ERSCommodityDataSeries]   WHERE [ERSCommodity_ERSGroup_ID] = " + groupID
                                    + " and ERSCommoditySubCommodity_ID = " + getCommodityID(comboBox_commodity.Text) + " ) ";
                                DataTable dt = GetData(sql);
                                DataRow[] dr = dt.Select();
                                foreach (DataRow row in dr)
                                {
                                    statTypes.Add(row["ERSStatisticType_Attribute"].ToString());
                                }
                            }


                            comboBox_statType.DataSource = statTypes;
                            comboBox_statType.SelectedItem = null;

                            //filter unit


                            //filter source 
                            source = new List<string>();
                            foreach (string groupID in groupIds)
                            {
                                string sql = "select DISTINCT ERSSource_Desc from " + schemaName
                                + "ERSSource_LU where ERSSource_ID IN (SELECT DISTINCT[ERSCommodity_ERSSource_ID] FROM  " + schemaName + "[ERSCommodityDataSeries]   WHERE [ERSCommodity_ERSGroup_ID] = " + groupID +
                                    " and ERSCommoditySubCommodity_ID = " + getCommodityID(comboBox_commodity.Text) + " ) ORDER BY ERSSource_Desc";

                                DataTable dt = GetData(sql);
                                DataRow[] dr = dt.Select();
                                foreach (DataRow row in dr)
                                {
                                    source.Add(row["ERSSource_Desc"].ToString());
                                }
                            }


                            comboBox_source.DataSource = source;
                            comboBox_source.SelectedItem = null;

                            unit = new List<string>();
                            foreach (string groupID in groupIds)
                            {
                                string sql = "select distinct ERSUnit_Desc from " + schemaName
                                    + "ERSUnit_LU ulu" + "," + schemaName + "ERSCommodityDataSeries cds" + "," + schemaName + "ERSDataValues dv " +
                                    " where ulu.ERSUnit_ID=dv.ERSDataValues_ERSUnit_ID " +
                                    " and cds.ERSCommoditySubCommodity_ID= " + getCommodityID(comboBox_commodity.Text) +
                                    " and cds.ERSCommodity_ID=dv.ERSDataValues_ERSCommodity_ID " +
                                    " and [ERSCommodity_ERSGroup_ID] = " + groupID;


                                DataTable dt = GetData(sql);
                                DataRow[] dr = dt.Select();
                                foreach (DataRow row in dr)
                                {
                                    unit.Add(row["ERSUnit_Desc"].ToString());
                                }
                            }


                            comboBox1_unit.DataSource = unit;
                            comboBox1_unit.SelectedItem = null;

                        }

                        else
                        {
                            fillCommodityCombobox();
                            fillSourceCombobox();
                            fillUnitCombobox();
                            fillStatTypeCombobox();
                        }




                    }

如果我手动清除组合框,所有其他三个值都应加载所有相关值。

现在,我不是100%相信您在这里的利用率,但根据最初的问题,我会使用Textupdate事件处理程序,如下所示:

    private void comboBox1_TextUpdate(object sender, EventArgs e)
    {
        ClearCmboboxesOnFirstEmpty(comboBox_commodity.Text);
    }

    private void ClearCmboboxesOnFirstEmpty(string comboValue)
    {
        if(comboValue == "")
        {
            fillCommodityCombobox();
            fillSourceCombobox();
            fillUnitCombobox();
            fillStatTypeCombobox();
        }
    }

现在,我对您在这里的利用率不是100%,但根据最初的问题,我将使用如下Textupdate事件处理程序:

    private void comboBox1_TextUpdate(object sender, EventArgs e)
    {
        ClearCmboboxesOnFirstEmpty(comboBox_commodity.Text);
    }

    private void ClearCmboboxesOnFirstEmpty(string comboValue)
    {
        if(comboValue == "")
        {
            fillCommodityCombobox();
            fillSourceCombobox();
            fillUnitCombobox();
            fillStatTypeCombobox();
        }
    }

您正在使用哪个web框架?您的查询很容易被注入,还记得在方法触发后,您需要根据数据更改重新绑定,以在select中加载新内容。@Greg很抱歉,请问,是否可以提供示例代码、我可以处理的内容、示例代码?在我手动清除第一个组合框后重新绑定所有组合框您使用的web框架?您的查询易受注入影响,还记得在方法激发后,您需要根据数据更改重新绑定,以加载select中的新内容。@Greg很抱歉,能否提供示例代码、我可以处理的内容、示例代码?用于在手动清除第一个组合框后重新绑定所有组合框