我尝试在选择特定<div>
时显示ListItem
。
在我的代码背后,我有:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
if (reportedBefore.SelectedItem.Text=="yes")
{
reportedBeforePanel.Visible = true;
}
else
{
reportedBeforePanel.Visible = false;
}
}
我最初提到this article here,其中说我需要一些东西:
您需要启用下拉列表的AutoPostBack以在服务器端引发OnSelectedIndexChanged事件。
AutoPostBack="true"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged
不可否认,我以前没有AutoPostBack
。添加后,我担心由于某种原因,请求的div
仍未显示。
<asp:DropDownList ID="reportedBefore" CssClass="larger-drop-2" AutoPostBack="true" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Text="Select" Value="Select"></asp:ListItem>
<asp:ListItem Text="No" Value="No"></asp:ListItem>
<asp:ListItem Text="Yes" Value="Yes"></asp:ListItem>
<asp:ListItem Text="Unsure" Value="Unsure"></asp:ListItem>
</asp:DropDownList>
<asp:Panel ID="reportedBeforePanel" runat="server" Visible="false">
<div id="showDiv">
<label for="yesDetails">
Please provide details
</label>
<asp:TextBox ID="yesDetails" CssClass="third-w-form" runat="server"/>
</div>
</asp:Panel>
有人会这么善意帮助我吗?
答案 0 :(得分:1)
C#区分大小写,因此"Yes"
不是"yes"
:
reportedBeforePanel.Visible = reportedBefore.SelectedItem.Text == "Yes";
另外,你可以使用这个:
reportedBeforePanel.Visible = reportedBefore.SelectedItem.Text.Equals("yes", StringComparison.InvariantCultureIgnoreCase);
答案 1 :(得分:1)
问题出在以下if
- 条件:
reportedBefore.SelectedItem.Text=="yes"
通过这种方式,您正在进行区分大小写的字符串比较(这是.NET中的默认值),但下拉列表中的值是以不同的方式编写的(&#34;是&#34; < / strong> vs. &#34; yes&#34; )。
为了解决此问题,请执行不区分大小写的字符串比较
string.Compare(reportedBefore.SelectedItem.Text, "yes", true) == 0
或更改if
- 声明中的大小写。