【问题标题】:Setting SelectedIndex to 0 for DropDown with AutoPostBack set to true将下拉菜单的 SelectedIndex 设置为 0,AutoPostBack 设置为 true
【发布时间】:2019-01-31 22:23:38
【问题描述】:

我正在使用下拉按钮,并将 AutoPostBack 设置为 true。我正在尝试将 DropDown 重置为页面回发上的默认选择——DropDown.SelectedIndex = 0;。 DropDown 确实重置为默认选择,但我无法进行选择,因为它在选择另一个选项后立即连续恢复到默认位置“进行选择”。我不确定它是否重要,但这被放置在更新面板中。

我需要将其设置回 0 的原因之一是,当我单击浏览器上的后退按钮时,会选择最后一个选择,如果用户尝试返回相同的选择,则除非我刷新页面,否则 DropDown 不起作用。例如。选择 1 将我重定向到第 2 页。如果我点击返回,Choice 1 仍然被选中。如果我单击下拉菜单再次选择选项 1,除非我刷新页面,否则不会发生任何事情。这是我的下拉 HTML:

<asp:DropDownList ID="DropDown" runat="server" EnableViewState="true" 
AppendDataBoundItems="true" AutoPostBack="true" 
OnSelectedIndexChanged="DropDown_SelectedIndexChanged">
                    <asp:ListItem>Make a Selection</asp:ListItem>
                    <asp:ListItem>Choice 1</asp:ListItem>
                    <asp:ListItem>Choice 2</asp:ListItem>
                </asp:DropDownList>

和 C#:

if (IsPostBack)
        {                
            DropDown.SelectedIndex = 0;

        }

【问题讨论】:

  • if(IsPostBack) 是多余的,因为 page_load 会自动调用

标签: c# asp.net webforms


【解决方案1】:

根据您的体验,我认为是您的浏览器在您使用浏览器后退按钮时恢复您的控制状态。

避免这种行为的一种方法是将autocomplete="off" 添加到您的&lt;form&gt; 元素中,例如:

<form id="form1" runat="server" autocomplete="off">
...
</form>

如果仅添加autocomplete="off" 还不够,还可以通过发送以下标头(例如,从您的 Page_Load 方法)告诉浏览器不要缓存页面:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Cache.SetNoStore();
    Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
}

请记住在尝试此解决方案之前删除执行DropDown.SelectedIndex = 0; 的行。

【讨论】:

    【解决方案2】:

    有几个原因:

    1. 首先需要删除:

      如果(IsPostBack) {
      DropDown.SelectedIndex = 0;
      }

    由于您启用了AutoPostback="true",page_load 将与OnSelectedIndexChanged 事件一起被调用,该事件将SelectedIndex 更改为0。

    1. 另外,需要确保Enable.ViewState 属性设置为true。

    【讨论】:

      【解决方案3】:

      请在页面加载中使用以下代码

      if (!IsPostBack)
      {                
          DropDown.SelectedIndex = 0;
      }
      

      【讨论】:

        猜你喜欢
        • 2014-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-09
        • 2016-11-13
        • 1970-01-01
        相关资源
        最近更新 更多