aspx简单级联下拉菜单

时间:2012-04-20 12:12:41

标签: asp.net drop-down-menu cascadingdropdown

也许以前曾经问过这个问题,如果是的话,那么抱歉:)

我在aspx中创建了一个简单的表单,它有2个下拉列表和一个按钮

在第一个ddl中我有选项可以说:

  • 所有
  • 诺基亚
  • 三星

第二个包含子类别。

  • 所有
  • 3310
  • N95
  • Galaxy ACE
  • Galaxy SII

如果在第一个用户中选择All in second,他将只看到All。
如果他选择诺基亚,他会看到All,3310和N95,如果他选择三星,他将获得All,Galaxy Ace和Galaxy SII。

我发现有几篇文章如何使用服务器,从服务器填充第二个下拉列表。

在我的情况下,我不需要服务器,因为我将有大约10个项目和3个类别。

怎么做?简单的aspx或javascript。

我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

尝试以下代码。

<asp:DropDownList runat="server" AutoPostBack="true" ID="ddlCategories" OnSelectedIndexChanged="ddlCategories_SelectedIndexChanged">
            <asp:ListItem Text="All" Value="All" />
            <asp:ListItem Text="Nokia" Value="Nokia" />
            <asp:ListItem Text="Samsung" Value="Samsung" />
        </asp:DropDownList>
        <asp:DropDownList runat="server" AppendDataBoundItems="true" ID="ddlSubCategories">
            <asp:ListItem Text="All" Value="All" />
        </asp:DropDownList>

因为您没有使用数据库,所以我们必须对值进行硬编码。

protected void ddlCategories_SelectedIndexChanged(object sender, EventArgs e)
    {
        ddlSubCategories.Items.Clear();   
        if (string.Compare(ddlCategories.SelectedValue, "Nokia", true) == 0)
        {
            ddlSubCategories.Items.Add(new ListItem("3310", "3310"));
            ddlSubCategories.Items.Add(new ListItem("N95", "N95"));
        }
        else if (string.Compare(ddlCategories.SelectedValue, "Samsung", true) == 0)
        {
            ddlSubCategories.Items.Add(new ListItem("Galaxy Ace", "Galaxy Ace"));
            ddlSubCategories.Items.Add(new ListItem("Galaxy SII", "Galaxy SII"));
        }
        ddlSubCategories.Items.Insert(0, new ListItem("All", "All"));
    }

希望它有所帮助。如果你想去javascript路线找到以下链接。

Populate one dropdown based on selection in another