【问题标题】:How to change drop down list selected index and visibility using another drop down list in asp.net?如何使用 asp.net 中的另一个下拉列表更改下拉列表选择的索引和可见性?
【发布时间】:2015-05-12 07:45:58
【问题描述】:

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

我该怎么做?

【问题讨论】:

  • 那么为什么不将ddls 重置为btnUpdate 点击内的所需状态呢? ddlStatus.Style= "visibility: hidden";ddlChanges.SelectedItem = ...
  • 我试过了,但是没用。
  • 您确定以后不重写更改吗?
  • 编辑您的问题,您可能的意思是“...ddlChanges 下拉列表将 Status Change 作为所选项目,并且 ddlStatus 应该可见。”

标签: javascript c# jquery html asp.net


【解决方案1】:

您正在执行完整的回发(客户端上的所有更改都会重置,回发的输入值除外) - 所以要么进行客户端 (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);
}

【讨论】:

    【解决方案2】:

    btnUpdate 点击事件引发服务器端代码,服务器不知道用户在客户端选择了什么。一种选择是使用客户端验证来避免回发并保留客户端的选择

    【讨论】:

    • 服务器知道用户在客户端选择了什么 - 值被回传。服务器不知道的是 ddlStatus 在客户端上是可见的 - 它再次隐藏返回。
    猜你喜欢
    • 1970-01-01
    • 2020-11-11
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    相关资源
    最近更新 更多