【问题标题】:Why asp.net dropdown with autopostback doesn't keep my selected value为什么带有自动回发功能的 asp.net 下拉菜单不保留我选择的值
【发布时间】:2012-10-05 06:31:12
【问题描述】:

按照此处ASP.NET Response.Redirect(Request.RawUrl) doesn't work 的建议,我确实将 autopostback = true 放在下拉列表中以重新加载我的页面。

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

如何在重新加载页面之前保留我以前的值?我认为自动回发可以完成这项工作?

【问题讨论】:

  • 您是否启用了 ViewState(在页面上和/或 web.config 中)?

标签: asp.net


【解决方案1】:

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

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

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

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

【讨论】:

  • 奇怪的是我已经按照你的建议做了,但它仍然没有保留选择。
  • 嗯,在这里的两个答案之间,我想不出别的了。几乎每次我认为它一定是别的东西时,总是会重新填充下拉列表或在某处意外清除它。如果您仍然遇到问题,可以尝试使用一些代码编辑上面的问题。
【解决方案2】:

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

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

例如:

文本=“xyz”值=“0”

文本=“xyz1”值=“0”

文本=“xyz2”值=“0”

文本=“abc”值=“1”

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

【讨论】:

  • 更老了,只是想指出这是我的问题。每个值必须是唯一的。就个人而言,我认为这很愚蠢。
【解决方案3】:
  1. 确保 Enable.ViewState 属性设置为 true。

  2. 按照 cptSup 的建议...确保您没有在页面上使用IsPostback 检查填充/绑定下拉列表

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 谢谢 - 这正是我的问题
    【解决方案5】:

    只是添加到 GMaster9 的答案中,就我而言,我不得不输入 text = value。 简单地使价值观独一无二,例如1、2、3 ...没有帮助。 因此:

    文本=“xyz”值=“xyz”

    文本=“xyz1”值=“xyz1”

    文本=“xyz2”值=“xyz2”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多