如何在asp.net中使用onselectedindexchanged(如何根据下拉选择启用或禁用文本框)

时间:2016-01-20 09:52:14

标签: c# asp.net

<div>
     <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem Value="1">management</asp:ListItem>
        <asp:ListItem Value="2">cet</asp:ListItem>
        <asp:ListItem Value="3">comedk</asp:ListItem>

    </asp:DropDownList>
</div>

在选择“管理”选项时,应禁用“等级”文本框,否则应启用它。

5 个答案:

答案 0 :(得分:0)

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
        onselectedindexchanged="ItemChanged">
        <asp:ListItem Value="1">management</asp:ListItem>
        <asp:ListItem Value="2">cet</asp:ListItem>
        <asp:ListItem Value="3">comedk</asp:ListItem>
</asp:DropDownList>

protected void ItemChanged(object sender, EventArgs e)
{
     if(DropDownList1.SelectedItem.Value == "1")
     //disable text box
}

答案 1 :(得分:0)

将“onselectedindexchanged”事件添加到下拉控件中。 然后在下拉列表选择值为1时禁用文本框。

答案 2 :(得分:0)

使用以下代码:

<asp:DropDownList ID="DropDownList1" runat="server"
        onselectedindexchanged="SelectedIndexChanged"  AutoPostBack="True" >
        <asp:ListItem Value="1">management</asp:ListItem>
        <asp:ListItem Value="2">cet</asp:ListItem>
        <asp:ListItem Value="3">comedk</asp:ListItem>
</asp:DropDownList>
protected void SelectedIndexChanged(object sender, EventArgs e)
{
     if(DropDownList1.SelectedItem.Value == "1")
{
     //DISABLE TEXT BOX
}
else
{
//ENABLE TEXT BOX
}
}

如果您有任何问题,请告诉我。

答案 3 :(得分:0)

试试这个&gt;&gt;

<div>
  <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_Changed">
        <asp:ListItem Value="1">management</asp:ListItem>
        <asp:ListItem Value="2">cet</asp:ListItem>
        <asp:ListItem Value="3">comedk</asp:ListItem>
</asp:DropDownList>
  
  <asp:TextBox ID="TextBox1" runat= "server"></asp:TextBox>
</div>
/*Code Behind*/
protected void DropDownList1_Changed(object sender, EventArgs e)
{
     if(DropDownList1.SelectedValue == "1")
        {
         TextBox1.Enabled = false;
        }
     else
        {
          TextBox1.Enabled = true;
        }
}

答案 4 :(得分:0)

您不需要执行页面回发以在更改下拉列表时禁用文本框:

<div>
     <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem Value="1">management</asp:ListItem>
        <asp:ListItem Value="2">cet</asp:ListItem>
        <asp:ListItem Value="3">comedk</asp:ListItem>
    </asp:DropDownList>
</div>


<script type="text/javascript">


    document.getElementById("<%=DropDownList1.ClientID %>").addEventListener("change", ChangeRankState, false);


    function ChangeRankState() {
        var e = document.getElementById("<%=DropDownList1.ClientID%>");

        var ddVal = e.options[e.selectedIndex].value;

        if (ddVal === '1') {
            document.getElementById('<%=txtRank.ClientID%>').disabled = true;
        } else {
            document.getElementById('<%=txtRank.ClientID%>').disabled = false;
        }
    }



</script>

这只是一个例子,您可能希望将其更新为更灵活,但我希望您明白这一点。

如果您愿意,可以更改此行:

var ddVal = e.options[e.selectedIndex].value;

阅读:

var ddVal = e.options[e.selectedIndex].text;

然后改变:

if (ddVal === '1') 

if (ddVal === 'management') 

比较可见文本而不是值。

需要注意的是脚本应该低于div。你不能和一个不在那里的控件的事件监听器:)