2016-04-24 145 views
1

美好的一天!ASP.NET禁用基于另一个下拉值的下拉列表

我有一个简单的代码在这里:

<asp:DropDownList ID="ddlNumber" runat="server"> 
    <asp:ListItem></asp:ListItem> 
    <asp:ListItem>1</asp:ListItem> 
    <asp:ListItem>2</asp:ListItem> 
    <asp:ListItem>3</asp:ListItem> 
</asp:DropDownList> 

<asp:DropDownList ID="ddlText" runat="server"> 
    <asp:ListItem></asp:ListItem> 
    <asp:ListItem>a</asp:ListItem> 
    <asp:ListItem>b</asp:ListItem> 
    <asp:ListItem>c</asp:ListItem> 
</asp:DropDownList> 

我想要做的是每当下拉列表不是空的,其他的下拉菜单将被禁用。

到目前为止,我已经尝试的代码是不工作:

 if (ddlNumber.SelectedValue == "" && ddlText.SelectedValue == "") 
     { 
      ddlNumber.Enabled = true; 
      ddlText.Enabled = true; 
     } 
     else if (ddlNumber.SelectedValue != "") 
     { 
      ddlText.Enabled = false; 
     } 
     else if (ddlText.SelectedValue != "") 
     { 
      ddlNumber.Enabled = false; 
     } 

任何帮助将非常感激。谢谢。

回答

3

您需要为列表项目设置Value属性。

<asp:DropDownList ID="ddlNumber" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlNumber_SelectedIndexChanged"> 
    <asp:ListItem Value=""></asp:ListItem> 
    <asp:ListItem Value="1">1</asp:ListItem> 
    <asp:ListItem Value="2">2</asp:ListItem> 
    <asp:ListItem Value="3">3</asp:ListItem> 
</asp:DropDownList> 

<asp:DropDownList ID="ddlText" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlText_SelectedIndexChanged"> 
    <asp:ListItem Value=""></asp:ListItem> 
    <asp:ListItem Value="a">a</asp:ListItem> 
    <asp:ListItem Value="b">b</asp:ListItem> 
    <asp:ListItem Value="c">c</asp:ListItem> 
</asp:DropDownList> 

也处理在的.cs SelectedIndexChanged事件文件

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (ddlNumber.SelectedValue == "" && ddlText.SelectedValue == "") 
    { 
     ddlNumber.Enabled = true; 
     ddlText.Enabled = true; 
    } 
} 

protected void ddlNumber_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (ddlNumber.SelectedValue != "") 
     ddlText.Enabled = false; 
    else 
     ddlText.Enabled = true; 
} 

protected void ddlText_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (ddlText.SelectedValue != "") 
     ddlNumber.Enabled = false; 
    else 
     ddlNumber.Enabled = true; 
} 
+0

尝试过,没有任何反应 – FewFlyBy

+0

@FewFlyBy用SelectedIndexChanged更新。请立即检查。 –

+0

非常感谢兄弟。 – FewFlyBy

1

你应该重视的事件处理程序,并设置AutoPostBacktrue如果你想被触发事件时作出选择:

<asp:DropDownList ID="ddlNumber" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlNumber_SelectedIndexChanged" > 
    <asp:ListItem></asp:ListItem> 
    <asp:ListItem>1</asp:ListItem> 
    <asp:ListItem>2</asp:ListItem> 
    <asp:ListItem>3</asp:ListItem> 
</asp:DropDownList> 

<asp:DropDownList ID="ddlText" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlNumber_SelectedIndexChanged" > 
    <asp:ListItem></asp:ListItem> 
    <asp:ListItem>a</asp:ListItem> 
    <asp:ListItem>b</asp:ListItem> 
    <asp:ListItem>c</asp:ListItem> 
</asp:DropDownList> 

代码隐藏事件处理程序:

protected void ddlNumber_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    ddlText.Enabled = ddlNumber.SelectedValue == ""; 
    ddlNumber.Enabled = ddlText.SelectedValue == ""; 
} 
+0

也谢谢!顺便说一句,有没有代码可以禁用此下拉菜单中的RequiredField,只要它被禁用? – FewFlyBy

+1

你在说'RequiredFieldValidator'吗?如果是这样,它也有一个'Enabled'属性,你可以设置为'false'。 – ConnorsFan

+0

是的。谢谢你,先生! – FewFlyBy

相关问题