ASP.NET禁用下拉列表基于另一个Dropdown值

时间:2016-04-24 01:40:45

标签: c# 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;
        }

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

如果您希望在进行选择时触发事件,则应附加事件处理程序并将(None, None)设置为AutoPostBack

true

代码隐藏中的事件处理程序:

<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>