我的asp.net应用程序中有一个这样的下拉列表,
<asp:DropDownList runat="server" ID="ddlChanges" CssClass="selectstyle" onchange="javascript:ddlChangesChanged();">
<asp:ListItem Text="-- Select -- " Value="-1"></asp:ListItem>
<asp:ListItem Text="Status Change" Value="1"></asp:ListItem>
<asp:ListItem Text="Product Name Change" Value="2"></asp:ListItem>
<asp:ListItem Text="Category Change" Value="3"></asp:ListItem>
</asp:DropDownList>
因此,当用户从列表中选择“状态更改”时,将显示另一个包含以下值的下拉列表
<asp:DropDownList runat="server" ID="ddlStatus" CssClass="selectstyle" Style="visibility: hidden;">
<asp:ListItem Text="-- Select -- " Value="-1"></asp:ListItem>
<asp:ListItem Text="Pending" Value="1"></asp:ListItem>
<asp:ListItem Text="Fixed" Value="2"></asp:ListItem>
<asp:ListItem Text="Cancelled" Value="3"></asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnUpdate" CssClass="selectstyle" runat="server" Text="Update" OnClick="btnUpdate_Click"></asp:Button>
如果用户未从下拉列表中选择任何值(ddlStatus),我将在btnUpdate点击事件中使用JavaScript显示警告消息(“您必须选择状态。”),
if (this.ddlStatus.SelectedItem.Value.Trim() == "-1")
{
string script = "<script type=\"text/javascript\">alert('You must select a status.');</script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "Alert", script);
}
但在此之后,我的页面刷新并且下拉列表 ddlChanges 具有“状态更改”(以前选择的项目)作为所选项目,并且下拉列表(ddlStatus)被隐藏。我希望ddlChanges下拉列表中包含 - 选择 - 作为所选项目, ddlStatus 应该可见。
我该怎么做?
答案 0 :(得分:0)
你正在做一个完整的回发(客户端上的所有更改都会重置,除了发布的返回输入值) - 所以要么做客户端(javascript)验证(最佳选项),要么切换到ajax部分回发(更快的选项),或者只是改变这个(最慢的选项):
if (this.ddlStatus.SelectedItem.Value.Trim() == "-1")
{
ddlStatus.Attributes["style"] = null;
string script = "<script type=\"text/javascript\">alert('You must select a status.');</script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), "Alert", script);
}
答案 1 :(得分:-1)
btnUpdate click事件会引发服务器端代码,服务器不知道用户在客户端上选择了什么。一个选项可以是使用客户端验证来避免回发并保留客户端的选择