2

我想显示/隐藏我的 ddlDuration 的一些值,这些值将根据我想要的 ddlLOanType 而改变。例如,如果他们从我的下拉列表中选择 Personal Loan 类型,我希望它显示 ddlDuration 中的所有值,如果我选择 New Car Loan,我希望它显示这些值“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>
4

3 回答 3

4
  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 页面操作系统中怎么办某天银行决定更改期限??尝试将您的数据与下拉列表绑定一些 ID,该 ID 可以识别哪种贷款类型将在下拉列表中显示哪些值。

于 2013-07-30T16:02:01.487 回答
1

有很多选项,但您不应该从标记中硬编码的项目开始。

快速解决方案:

List<string>为每个数字集合设置 一个私有变量(我说的是 string 而不是 int,因为 ListItems 将被转换为字符串)。

例如,

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

ddlLoanType更改为 Personal Loan 时,您可以设置您ddlDuration的 DataSource 以personalLoanIds调用该DataBind()方法。

于 2013-07-30T15:37:17.340 回答
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();
       }
}
于 2013-07-30T15:37:47.823 回答