2016-04-24 8 views
1

Guten Tag!ASP.NET Disable Dropdown-Liste basierend auf einem anderen Dropdown-Wert

Ich habe einen einfachen Code hier:

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

Was ich tun wollte, ist, wenn ein Drop-Down nicht leer ist, das andere Drop-Down deaktiviert ist.

Der Code, den ich bisher versucht haben, nicht funktioniert:

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

Jede Hilfe sehr geschätzt werden würde. Vielen Dank.

Antwort

3

Sie müssen die Value-Eigenschaft für die Listenelemente festlegen.

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

Auch SelectedIndexChanged Ereignis in CS-Datei

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

Versucht und nichts passiert – FewFlyBy

+0

@FewFlyBy mit SelectedIndexChanged aktualisiert. Bitte überprüfen Sie es jetzt. –

+0

Vielen Dank Bruder. – FewFlyBy

1

behandeln Sie sollten die Event-Handler anhängen und setzen AutoPostBack auf true, wenn Sie das Ereignis ausgelöst werden soll, wenn eine Auswahl getroffen wird:

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

Der Event-Handler in Code-Behind:

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

Danke auch! Gibt es übrigens einen Code, der auch das RequiredField für diese Dropdown-Felder deaktivieren kann, wenn es deaktiviert ist? – FewFlyBy

+1

Sprechen Sie über einen 'RequiredFieldValidator'? Wenn ja, hat es auch eine 'Enabled'-Eigenschaft, die Sie auf 'false' setzen können. – ConnorsFan

+0

Ja ist es. Danke mein Herr! – FewFlyBy

Verwandte Themen