我正在使用Windows窗体应用程序。我使用两个comboBox控件,这些控件填充了SQL SERVER表中的数据。
加载表单后,cmbCategory将被填充。
当选择其中一个cmbCategory值时,cmbSubCategory将被填充。
让我这样说吧:
如果cmbCategory.SelectedIndex = 0,则cmbSubCategory显示一些特定项目。 如果cmbCategory.SelectedIndex = 1,则cmbSubCategory显示其他一组特定项目。
如果选择了cmbCategory中的某个项目,然后将选择更改为另一个项目 - 在同一个控件中,则应删除cmbSubCategory中的所有项目。为了得到这个,我使用语句“cmbSUbCategory.Items.Clear();”。但是,它不会发生。 cmbSubCategory中的项目永远不会消失。如果我在cmbCategoryComboBox1中交替选择不同的项目,cmbSubCategory中的项目列表会增长,增长和增长。
这是我的代码 :
private void cmbCategory_SelectedIndexChanged(object sender, EventArgs e)
{
cmbSubCategory.Items.Clear();
DataSet ds = new DataSet();
ds =category.CategoryData();
for (int i = 0; i < ds.Tables["Temp_CategoryTable"].Rows.Count; i++)
{
if (ds.Tables["Temp_CategoryTable"].Rows[i][1].ToString() == cmbCategory.SelectedItem.ToString())
{
txtCatID.Text = ds.Tables["Temp_CategoryTable"].Rows[i][0].ToString();
}
}
products.categoryID = int.Parse(txtCatID.Text);
DataSet ds1 = new DataSet();
ds1 = subcat.subCategoryData(products);
for (int j = 0; j < ds1.Tables["Temp_SubCatTable"].Rows.Count; j++)
{
var val = ds1.Tables["Temp_SubCatTable"].Rows[j][1].ToString();
if (!cmbSubCategory.Items.Contains(val))
{
cmbSubCategory.Items.Add(ds1.Tables["Temp_SubCatTable"].Rows[j][1].ToString());
}
}
}
我不明白为什么这句话
cmbSubCategory.Items.Clear();
没有像我期望的那样工作。或者它可能只是因为我觉得它不起作用。
我真的很感激任何帮助。
提前致谢。
subCategoryData()定义如下
public DataSet subCategoryData(ProductClass product)
{
string str = "SELECT * FROM prod_subcategory_table WHERE categoryID="+product.categoryID+"";
ds = dbcon.subCategoryDataDB(str,product);
return ds;
}
和subCategoryDataDB(str,product)定义如下:
public DataSet subCategoryDataDB(string sqlQuery,ProductClass pd)
{
da.SelectCommand = new SqlCommand(sqlQuery, con);
da.Fill(ds, "Temp_SubCatTable");
return ds;
}