正如这里所说的ASP.NET Response.Redirect(Request.RawUrl) 不起作用我确实将 autopostback = true 放在下拉列表中以重新加载我的页面。
但在重新加载后,它也会将所选项目重置为第一个。
那么如何在重新加载页面之前保留我以前的值呢?我认为自动回发会做这项工作吗?
正如这里所说的ASP.NET Response.Redirect(Request.RawUrl) 不起作用我确实将 autopostback = true 放在下拉列表中以重新加载我的页面。
但在重新加载后,它也会将所选项目重置为第一个。
那么如何在重新加载页面之前保留我以前的值呢?我认为自动回发会做这项工作吗?
确保您没有在回发时重新填充下拉列表。
protected void Page_Load(object sender, EventArgs e)
{
PopulateDropDownList();
}
将导致它每次都被重置。而是尝试:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateDropDownList();
}
}
这是一个非常古老的问题,但我仍然想为可能引用此页面的其他人回答:
当下拉列表的值中有非唯一字符串时,您将始终指向相同值的第一项。
例如 :
文本=“xyz”值=“0”
文本=“xyz1”值=“0”
文本=“xyz2”值=“0”
文本=“abc”值=“1”
当您选择 xyz 或 xyz1 或 xyz2 时,回发后,它会返回到第一个项目,其中文本为 xyz。如果你保持独特的价值观,你将不会面临这个问题。我浪费了我的时间,终于用这个技巧解决了它。
确保该Enable.ViewState
属性设置为 true。
正如 cptSup 所建议的那样......确保您没有在页面上填充/绑定下拉菜单并IsPostback
检查
还要确保您没有在 System.Web.UI.Page.Init 方法中检查 DropDownList.SelectedValue。由于 ASP.NET 页面生命周期,SelectedValue 在 System.Web.UI.Page.Load 方法之前将不可用。至少这是我的经验,刚刚在 ASP.NET 4.0 中。
只需添加 GMaster9 的答案,就我而言,我必须输入 text = value。简单地使值唯一,例如 1, 2, 3 ... 并没有帮助。因此 :
文本 = “xyz” 值 =“xyz”
文本 = “xyz1” 值 =“xyz1”
文本=“xyz2”值=“xyz2”