首页 > 解决方案 > 将“ALL”选项添加到列表框中,并根据下拉列表中的选择动态更改它

问题描述

我有一个包含国家名称的下拉列表和一个包含不同类型季节(如夏季、冬季等)的列表框,并且它们都在 page_load 事件中从我的数据库中的表中更新。

在 Page_Load 事件期间,我的 DropDownList 和 ListBox 会使用数据库表中存在的所有可用国家和季节进行更新。

在我的 DropDownList 中选择国家后,我的 ListBox 会动态变化。

例如,如果我选择美国,那么季节会像秋天、冬天、夏天一样动态变化。现在它完美地工作。

如果选择了一个拥有所有季节的国家,我唯一想要的是在我的 ListBox 顶部添加一个“ALL”选项。

例如,如果我在 DropDownList 中选择国家“X”,并且数据库中包含所有天气,则 ListBox 顶部将有一个“ALL”选项。基本上,只有当 Page_Load 事件期间的所有季节都与选择国家后的季节相匹配时,才会弹出“ALL”选项。

我试过的:

我第一次像这样在 page_loaded 之后尝试获取列表框的总数

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        int countListBox = lb.Items.Count;  
    }

}

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{                           
    if (lb.Items.Count == countListBox)
    {
        lb.Items.Insert(0, "All");
    }
}

标签: asp.net

解决方案


我有一个想法,但我不确定这是否正是您要问的。

尝试在 Page_Load 方法之外添加您的变量,以便可以从所有方法访问它。

private int _countListBox;

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // make sure the listbox is populated first.
        _countListBox = lb.Items.Count;  
    }    
}

然后

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{                           
    if (lb.Items.Count == _countListBox)
    {
        lb.Items.Insert(0, "All");
    }
}

推荐阅读