2015-09-17 175 views
0

我想創建第二個下拉列表,該列表基於第一個下拉列表的值根據需要調整列表項目。我寫了下面的代碼,但即使沒有編譯錯誤,第二個下拉列表仍然是空的。以下是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 = ""; 
     } 

回答

1

變化類似這樣的標記

<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(); 
} 

使用源初始化第二個下拉菜單,該第二個下拉菜單取決於當前第一個下拉列表的所選值。
因此,當用戶更改第一個下拉選擇值 - 回發發生,第二個下拉填充所需的值

+0

謝謝。我完全忘記了「OnSelectedIndexChanged =」ddl_1_SelectedIndexChanged「,我會讓你知道它是否有效 – el94

+0

不用理睬」AutoPostBack「屬性 –

+0

謝謝你的工作。 – el94

相關問題