我有一个dropdownLists的问题

时间:2011-05-11 08:11:49

标签: c# asp.net drop-down-menu

我有一个类似于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);
    }

}

实际发生的情况是,每当我从第一个下拉列表中选择一个项目时,就会在第二个下拉列表中添加一个字符串数组。

但我希望第二个下拉列表根据第一个下拉列表中选择的值替换其值,而不是将这些值添加到第二个下拉列表中已放置的值

3 个答案:

答案 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之前和之后查看SelectedItemSelectedValueSubTopicDropDownList.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);
    }

}