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

Javascript 如何使用asp.net中的另一个下拉列表更改下拉列表选定的索引和可见性?,javascript,c#,jquery,html,asp.net,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="Stat

在我的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>
因此,当用户从列表中选择Status Change(状态更改)时,会出现另一个具有以下值的下拉列表

<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 click事件中使用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下拉列表中的-Select-作为所选项目,并且ddlStatus应该可见


如何执行此操作?

b更新单击事件引发服务器端代码,而服务器不知道用户在客户端上选择了什么。一个选项是使用客户端验证,以避免回发并保留客户端的选择。如果您正在执行完全回发,则会重置客户端上的所有更改,但回发的输入值除外。因此,要么执行客户端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);
}

那么,为什么不在btnUpdate单击中将DDL重置为所需的状态呢?ddlStatus.Style=可见性:隐藏;和ddlChanges.SelectedItem=…我尝试了,但它不起作用。您确定以后不重写更改吗?编辑您的问题,您的意思可能是…ddlChanges下拉列表将状态更改为所选项目,并且ddlStatus应可见。服务器知道用户在客户端上选择的内容-值将被发回。服务器不知道的是,ddlStatus在客户端上是可见的——它会再次隐藏返回。