2013-07-30 280 views
1

我想顯示/隱藏ddlDuration的某些值,這些值將根據我想要的ddlLOanType而改變。例如,如果他們從我的下拉列表中選擇個人貸款類型,我希望它顯示ddlDuration中的所有值,如果我選擇新車貸款,我希望它顯示這些值「36,48,60」。我不確定我應該使用什麼。感謝您的幫助顯示/隱藏其他下拉列表值的下拉列表值已更改

Type: <asp:DropDownList ID="ddlLoanType" runat="server" AutoPostBack="True" 
     onselectedindexchanged="ddlLoanType_SelectedIndexChanged"> 
     <asp:ListItem Value="0">Select</asp:ListItem> 
     <asp:ListItem Value="1">Personal Loan</asp:ListItem> 
     <asp:ListItem Value="2">New Car Loan</asp:ListItem> 
     <asp:ListItem Value="3">Used Car Loan</asp:ListItem> 
    </asp:DropDownList> 

Duration:<asp:DropDownList ID="ddlDuration" runat="server" 
     onselectedindexchanged="ddlDuration_SelectedIndexChanged" 
     AutoPostBack="True"> 
     <asp:ListItem Value="12">12</asp:ListItem> 
     <asp:ListItem Value="24">24</asp:ListItem> 
     <asp:ListItem Value="36">36</asp:ListItem> 
     <asp:ListItem Value="48">48</asp:ListItem> 
     <asp:ListItem Value="60">60</asp:ListItem> 
    </asp:DropDownList> 
+1

ddlLoanType_SelectedIndexChanged on this event bind your ddDDuration dropdown instead of show and hide the values。 – rach

回答

2
protected void ddlLoanType_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      if (ddlLoanType.SelectedValue =="2") 
      { 
       ddlDuration.Items.FindByValue("12").Enabled = false; 
       ddlDuration.Items.FindByValue("24").Enabled = false; 


      } 
     } 

然而,這並不是解決這個問題的正確方法,在編寫代碼,你不應該有任何依賴性,應該是足夠的靈活性,在將來修改。如果某天的邏輯改變了,誰又會將列表項添加到你的aspx頁面os中,有一天銀行決定改變持續時間?試着用dropdownlist綁定你的數據和一些id,它可以識別哪些貸款類型會顯示哪些值落下。

1

有很多選項,但不應該以標記中硬編碼的項目開頭。

快速的解決方案:

有私人List<string>變量設置爲每個號碼的集合(我說的字符串,而不是INT因爲listItems中會被轉換爲字符串)。

因此,舉例來說,

private List<string> personalLoanIds = new List<string>() {"12", "24"}; 

ddlLoanType更改爲個人貸款,你可以設置你的ddlDuration的數據源,以personalLoanIds然後調用DataBind()方法。

1

您已經在處理ddlLoanType_SelectedIndexChanged事件,您只需添加/刪除應用/不應用的值並重新綁定數據。

下面是一個例子:

protected void ddlLoanType_SelectedIndexChanged (EventArgs e) 
{ 
     if(ddlLoanType.SelectedValue=="1") //show all 
     { 
      ddlDuration.DataSource=new int []{ 12,24,36,48,60 } ; 
      ddlDuration.DataBind(); 
     } 
     else if(ddlLoanType.SelectedValue=="2") //car loan 
     { 
      ddlDuration.DataSource=new int []{ 36,48,60 } ; 
      ddlDuration.DataBind(); 
     } 
}