一个级联操作的问题,代码中有三个组合框,情况是当第一个框选中一项时,第二三个框就有数据被添加进去了(本来是没有数据的)。要实现在的功能是当再次在第一个框选中另一项时,第二三个框的数据就要更新,不能把原来的数据累加起来。但是三个框都有默认选定的项(--请选择--),是在窗体加载时指定的。如果用Clear清除二三框原有的数据的话,会出现报错,因为窗体加载时二三个框的默认选定项也被清除了。简单点:我要清除原有的数据时,不清除默认的选定项。下面的代码,请帮看一下,怎么实现。private void cb1_SelectedIndexChanged(object sender, EventArgs e)
{
string a =cb1.SelectedItem.ToString();//读取选中的项
if (a == "所有年份")//判断是否选中“所有年份”一项
{
a = "2";//用数字2匹配所有符合的数据
}
try
{
string sql = string.Format("select 期号 from cch where 期号 like '{0}%'", a);//执行查询
SqlCommand command = new SqlCommand(sql, DBH.connection);//创建sqlcommand对象
DBH.connection.Open();//打开连接
SqlDataReader datareader = command.ExecuteReader();//执行查询
string r = "";//数据添加用的变量
string h = "";//这个变量是关键,用来清除,执行了另一选项而添加新的数据时清除旧的数据
if (a != "2")//这个if语句用来检查选中的项是否是所有年份或者不是,通过用通配符赋值给变量h
{
h = "^20[0-9]{5}$";//不是所有年份
}
else
{
h = "^2[0-9]{6}$";//是所有年份
}
cb2.Items.Remove(h);//清除指定的项,我不知道用通配符能否起到索引项的作用。
cb3.Items.Remove(h); //清除指定的项,我不知道用通配符能否起到索引项的作用。
while (datareader.Read())//循环读取数据
{
r = (string)datareader[0];//从数据库相关列中读取到的数据转换成string赋值给r
cb2.Items.Add(r);//向组合框的集合添加数据
cb3.Items.Add(r);//向组合框的集合添加数据
} datareader.Close();//关闭SqlDataReader对象 }
catch (Exception ex)
{
throw;
}
finally
{
DBH.connection.Close();
} }
{
string a =cb1.SelectedItem.ToString();//读取选中的项
if (a == "所有年份")//判断是否选中“所有年份”一项
{
a = "2";//用数字2匹配所有符合的数据
}
try
{
string sql = string.Format("select 期号 from cch where 期号 like '{0}%'", a);//执行查询
SqlCommand command = new SqlCommand(sql, DBH.connection);//创建sqlcommand对象
DBH.connection.Open();//打开连接
SqlDataReader datareader = command.ExecuteReader();//执行查询
string r = "";//数据添加用的变量
string h = "";//这个变量是关键,用来清除,执行了另一选项而添加新的数据时清除旧的数据
if (a != "2")//这个if语句用来检查选中的项是否是所有年份或者不是,通过用通配符赋值给变量h
{
h = "^20[0-9]{5}$";//不是所有年份
}
else
{
h = "^2[0-9]{6}$";//是所有年份
}
cb2.Items.Remove(h);//清除指定的项,我不知道用通配符能否起到索引项的作用。
cb3.Items.Remove(h); //清除指定的项,我不知道用通配符能否起到索引项的作用。
while (datareader.Read())//循环读取数据
{
r = (string)datareader[0];//从数据库相关列中读取到的数据转换成string赋值给r
cb2.Items.Add(r);//向组合框的集合添加数据
cb3.Items.Add(r);//向组合框的集合添加数据
} datareader.Close();//关闭SqlDataReader对象 }
catch (Exception ex)
{
throw;
}
finally
{
DBH.connection.Close();
} }
while(cb2.Items.Count>2)
{
cb2.Items.RemoveAt(1);
}