簡體   English   中英

基於另一個下拉列表的值的下拉列表項

[英]Dropdown list items based on value of another drop down list

我試圖創建第二個下拉列表,該列表根據第一個下拉列表的值根據需要調整列表項。 我已經編寫了以下代碼,但是即使沒有編譯錯誤,第二個下拉列表也始終為空。 以下是html和C#代碼。

  <table> <tr><td>System</td> <td> <asp:DropDownList ID="systemddl" runat="server" AutoPostBack="True" Height="24px" Width="142px"> <asp:ListItem>G1</asp:ListItem> <asp:ListItem>D2</asp:ListItem> <asp:ListItem> D3</asp:Listitem> <asp:ListItem> M4</asp:Listitem> <asp:ListItem> I5</asp:Listitem> </asp:DropDownList></td> </tr> <tr> <td>KPI</td> <td> <asp:DropDownList ID="kpiddl" runat="server" AutoPostBack="True" Height="24px" Width="142px"></asp:DropDownList></td> </tr> </table> 

  protected void systemddl_SelectedIndexChanged(object sender, EventArgs e)
{
    if (systemddl.SelectedValue == "G1")
    {
        var items1 = new List<ListItem>()
        {
            new ListItem("TEST1"),
            new ListItem("")

        };
        kpiddl.DataSource = items1;
        kpiddl.DataBind();
        kpiddl.SelectedValue = "";
        if (systemddl.SelectedValue == "D2")
        {
            var items2 = new List<ListItem>()
        {
            new ListItem("1"),
            new ListItem("2"),
            new ListItem("3"),
            new ListItem("4")
        };
            kpiddl.DataSource = items2;
            kpiddl.DataBind();
        }
        if (systemddl.SelectedValue == "I5")
        {
            var items3 = new List<ListItem>()
        {
            new ListItem("Total"),
            new ListItem("V Completed"),
            new ListItem("R found"),
            new ListItem("R sold"),
            new ListItem("A found"),
            new ListItem("Asold"),
            new ListItem("")

        };
            kpiddl.DataSource = items3;
            kpiddl.DataBind();
            kpiddl.SelectedValue = "";
        }
        if (systemddl.SelectedValue == "D3")
        {
            var items4 = new List<ListItem>()
        {
            new ListItem("FRFT"),
            new ListItem("")

        };
            kpiddl.DataSource = items4;
            kpiddl.DataBind();
        }
        if (systemddl.SelectedValue == "M4")
        {
            var items5 = new List<ListItem>()
        {
            new ListItem("A"),
            new ListItem("B"),
            new ListItem("C"),
            new ListItem("D"),
            new ListItem("")
        };
            kpiddl.DataSource = items5;
            kpiddl.DataBind();
            kpiddl.SelectedValue = "";
        }

像這樣更改標記

<asp:DropDownList 
    ID="ddl_1" 
    runat="server"
    AutoPostBack="true"
    OnSelectedIndexChanged="ddl_1_SelectedIndexChanged">
</asp:DropDownList>
<asp:DropDownList 
    ID="ddl_2" 
    runat="server">


並為這樣的第一個下拉列表的SelectedIndexChanged添加處理程序

protected void ddl_1_SelectedIndexChanged(object sender, EventArgs e)
{
    switch (this.ddl_1.SelectedValue)
    {
        case "A":
            this.ddl_2.DataSource = source1;
            break;
        case "B":
            this.ddl_2.DataSource = source2;
            break;
        default:
            break;
    }

    this.ddl_2.DataBind();
}

使用source初始化第二個下拉列表,具體取決於第一個下拉列表的當前選定值。
因此,當用戶更改第一個下拉列表的選定值時-發生回發,第二個下拉列表填充所需的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM