我想显示/隐藏我的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>
答案 0 :(得分:3)
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 page os某天银行决定改变持续时间?尝试用dropdownlist绑定你的数据,其中一些id可以识别哪种贷款类型将在下拉列表中显示哪些值。
答案 1 :(得分:1)
有很多选项,但您不应该从标记中硬编码的项目开始。
快速解决方案:
为每个数字集合设置一个私有List<string>
变量(我说字符串而不是int,因为ListItems将转换为字符串)。
例如,
private List<string> personalLoanIds = new List<string> () {"12", "24"};
当ddlLoanType
更改为个人贷款时,您可以将ddlDuration
的数据源设置为personalLoanIds
,然后调用DataBind()
方法。
答案 2 :(得分: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();
}
}