1

正如这里所说的ASP.NET Response.Redirect(Request.RawUrl) 不起作用我确实将 autopostback = true 放在下拉列表中以重新加载我的页面。

但在重新加载后,它也会将所选项目重置为第一个。

那么如何在重新加载页面之前保留我以前的值呢?我认为自动回发会做这项工作吗?

4

5 回答 5

10

确保您没有在回发时重新填充下拉列表。

protected void Page_Load(object sender, EventArgs e)
{
    PopulateDropDownList();
}

将导致它每次都被重置。而是尝试:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        PopulateDropDownList();
    }
}
于 2012-10-05T06:35:52.603 回答
5

这是一个非常古老的问题,但我仍然想为可能引用此页面的其他人回答:

当下拉列表的值中有非唯一字符串时,您将始终指向相同值的第一项。

例如 :

文本=“xyz”值=“0”

文本=“xyz1”值=“0”

文本=“xyz2”值=“0”

文本=“abc”值=“1”

当您选择 xyz 或 xyz1 或 xyz2 时,回发后,它会返回到第一个项目,其中文本为 xyz。如果你保持独特的价值观,你将不会面临这个问题。我浪费了我的时间,终于用这个技巧解决了它。

于 2014-07-14T11:22:32.760 回答
3
  1. 确保该Enable.ViewState属性设置为 true。

  2. 正如 cptSup 所建议的那样......确保您没有在页面上填充/绑定下拉菜单并IsPostback检查

于 2012-10-05T06:44:14.260 回答
2

还要确保您没有在 System.Web.UI.Page.Init 方法中检查 DropDownList.SelectedValue。由于 ASP.NET 页面生命周期,SelectedValue 在 System.Web.UI.Page.Load 方法之前将不可用。至少这是我的经验,刚刚在 ASP.NET 4.0 中。

于 2013-05-29T06:44:21.133 回答
1

只需添加 GMaster9 的答案,就我而言,我必须输入 text = value。简单地使值唯一,例如 1, 2, 3 ... 并没有帮助。因此 :

文本 = “xyz” 值 =“xyz”

文本 = “xyz1” 值 =“xyz1”

文本=“xyz2”值=“xyz2”

于 2018-05-18T05:46:23.290 回答