如何使用asp.net中的另一个下拉列表更改下拉列表选择的索引和可见性?

时间:2015-03-10 18:10:42

标签: javascript c# jquery html asp.net

我的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 应该可见。

我该怎么做?

2 个答案:

答案 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事件会引发服务器端代码,服务器不知道用户在客户端上选择了什么。一个选项可以是使用客户端验证来避免回发并保留客户端的选择