C# 在清除c中的一个下拉列表后重新加载所有下拉列表
所以,这是我的问题 我在屏幕上有四个下拉列表,所有四个都是在屏幕加载时加载的,也就是当我更改第一个组合框时,所有三个都是使用selectedindex方法加载的,这方面没有问题 但是,当我手动清除第一个组合框时,其余三个组合框将保留与以前相同的值,我无法重置它们。有什么建议吗C# 在清除c中的一个下拉列表后重新加载所有下拉列表,c#,C#,所以,这是我的问题 我在屏幕上有四个下拉列表,所有四个都是在屏幕加载时加载的,也就是当我更改第一个组合框时,所有三个都是使用selectedindex方法加载的,这方面没有问题 但是,当我手动清除第一个组合框时,其余三个组合框将保留与以前相同的值,我无法重置它们。有什么建议吗 private void comboBox_commodity_SelectedIndexChanged(object sender, EventArgs e)
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很抱歉,能否提供示例代码、我可以处理的内容、示例代码?用于在手动清除第一个组合框后重新绑定所有组合框