我有一个类似于Dictionary<string,string[]>
我还有2个下拉列表。我希望第二个下拉列表显示数据,具体取决于第一个dropdropdownlist中的项目选择的内容。
所以我在第二个下拉列表中添加了一个事件。算法是:
protected void topicDropDownMenu_SelectedIndexChanged1(object sender, EventArgs e)
{
string[] chosenItem;
chosenItem = null;
SubTopicDropDownList.ClearSelection();
chosenItem = topic[topicDropDownMenu.SelectedItem.Value];
foreach (string item in chosenItem)
{
SubTopicDropDownList.Items.Add(item);
}
}
实际发生的情况是,每当我从第一个下拉列表中选择一个项目时,就会在第二个下拉列表中添加一个字符串数组。
但我希望第二个下拉列表根据第一个下拉列表中选择的值替换其值,而不是将这些值添加到第二个下拉列表中已放置的值
答案 0 :(得分:2)
// add this line - it's different from ClearSelection()
SubTopicDropDownList.Items.Clear();
foreach (string item in chosenItem)
{
SubTopicDropDownList.Items.Add(item);
}
答案 1 :(得分:1)
在重新加载之前清除列表中的项目?请参阅ListItemCollection.Clear Method。
答案 2 :(得分:0)
SubTopicDropDownList.ClearSelection()
不会清空列表,只是取消选择所选项目。您可以在调用SelectedIndex
之前和之后查看SelectedItem
,SelectedValue
或SubTopicDropDownList.ClearSelection()
的值来确认这一点。您实际想要做的是使用SubTopicDropDownList.Items.Clear()
清空/清除整个项目集。
所以正确的代码是:
protected void topicDropDownMenu_SelectedIndexChanged1(object sender, EventArgs e)
{
string[] chosenItem;
chosenItem = null;
ubTopicDropDownList.Items.Clear();
chosenItem = topic[topicDropDownMenu.SelectedItem.Value];
foreach (string item in chosenItem)
{
SubTopicDropDownList.Items.Add(item);
}
}