0

简而言之,我需要 ID="textComments" 的文本框仅在从下拉列表中选择“其他”的下拉选项时出现,然后在进行其他选择时消失。我可以用 JS 做到这一点,但它需要在 C# 中。

<asp:DropDownList runat="server" ID="dropEnquiryType" CssClass="dropdownRequestList">
    <asp:ListItem Value="Customer Services" Text="Customer Services"></asp:ListItem>
    <asp:ListItem Value="Website" Text="Website"></asp:ListItem>
    <asp:ListItem Value="Contract" Text="Contract Hire"></asp:ListItem>
    <asp:ListItem Value="Other" Text="Other"></asp:ListItem>
</asp:DropDownList>

<asp:label runat="server" ID="lblComments" AssociatedControlID="textComments" CssClass="textLabel">Comments:</asp:label>
<asp:TextBox runat="server" MaxLength="200" TextMode="MultiLine" Columns="40" Rows="4" ID="textComments" Wrap="true" CssClass="textComments"></asp:TextBox>

帮助将不胜感激。

4

2 回答 2

2
  • 做第DropDownList一个AutoPostBack=true
  • 处理它的SelectedIndexChanged事件
  • 在此处切换两个控件的可见性

aspx:

<asp:DropDownList AutoPostBack="true" OnSelectedIndexChanged="dropEnquiryType_Changed" runat="server" ID="dropEnquiryType" CssClass="dropdownRequestList">
    <asp:ListItem Value="Customer Services" Text="Customer Services"></asp:ListItem>
    <asp:ListItem Value="Website" Text="Website"></asp:ListItem>
    <asp:ListItem Value="Contract" Text="Contract Hire"></asp:ListItem>
    <asp:ListItem Value="Other" Text="Other"></asp:ListItem>
</asp:DropDownList>

代码隐藏:

protected void dropEnquiryType_Changed(Object sender, EventArgs e)
{
    lblComments.Visible = dropEnquiryType.SelectedValue == "Other";
    textComments.Visible = lblComments.Visible;
}
于 2013-07-03T15:23:04.077 回答
1

如果您绝对必须在 C# 中执行此操作,那么在 PreRender 中进行简单检查就足够了:

textComments.Visible = (dropEnquiryType.SelectedValue == "Other");

但是,这还需要您在 dropEnquiryType 上设置 AutoPostback,它使用... JavaScript!

于 2013-07-03T15:23:33.463 回答