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

How to change drop down list selected index and visibility using another drop down list in asp.net?

本文关键字:下拉列表 索引 可见性 net 何使用 另一个 asp      更新时间:2023-09-26

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

我该怎么做?

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