【问题标题】:Why ispostback not working with dropdown box为什么回发不适用于下拉框
【发布时间】:2012-10-06 11:48:37
【问题描述】:

我想在页面重新加载后保留选定的项目:

摘自.aspx:

    <asp:DropDownList ID="MyDropDown" runat="server" AutoPostBack="true" 
        onselectedindexchanged="MyDropDown_SelectedIndexChanged">

    </asp:DropDownList>

摘自 page_load 中的 .cs

        if (!IsPostBack)
        {
            PopulateDropDownList();
        }

    private void PopulateDropDownList()
    {
        MyDropDown.Items.Add("1");
        MyDropDown.Items.Add("2");
    }

    protected void MyDropDown_SelectedIndexChanged(object sender, EventArgs e)
    {
        Response.Redirect(Request.RawUrl);
    }

【问题讨论】:

标签: asp.net autopostback


【解决方案1】:

Response.Redirect 刷新页面,您将失去选择索引的视图状态。您可以在重定向之前将所选索引放入会话中。

protected void MyDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
    Session["MyDropDownSelectedIndex"] = MyDropDown.SelectedIndex.ToString();
    Response.Redirect(Request.RawUrl);
}

【讨论】:

  • 这是不好的做法,不能解决任何问题,因为需要再次在下拉列表页面加载时选择该值。如果用户打开了两个相同的页面怎么办?会话中的相同值,大混乱....
  • 我同意,但为什么要在 MyDropDown_SelectedIndexChanged 中使用 Response.Redirect?
  • 我使用 Response.Redirect 因为我需要重新加载页面,因为内容取决于从下拉列表中选择的内容(数据库名称)
  • @Aristos 不好的做法与否似乎 Adil 是唯一一个提供可能有效的解决方案的人(必须尝试)所以如果你有更好的...... :)
  • @user310291 以太尝试 UpdatePanel,以太将下拉列表中的值添加为 url 参数......更复杂......例如重定向到page.aspx?sel=12 - Adil 给出一个解决方案,好的,不好实践是为用户服务的。
【解决方案2】:

您需要在 Page init 事件中填充下拉列表。如果您在页面加载事件期间这样做,则无法正确恢复视图状态(因为在页面加载事件之前未填充下拉列表),因此无法触发 on selected index changed 事件。

编辑:您可能希望缓存填充下拉列表的数据,以节省一些绕行到数据库的行程。我认为您也不需要在 on selected index changed 事件中重定向。

【讨论】:

  • 我需要重新加载页面,因为内容取决于从下拉列表中选择的内容。
  • 我尝试输入init,但它仍然不记得我的选择
  • 那是重定向的原因,去掉重定向,换成代码,根据选中的索引渲染不同的内容。
  • 我需要做重定向,因为我的内容必须从另一个数据库更新(下拉选择一个新的数据库),所以页面需要重新加载(所以重定向)。
  • @user310291 您不需要重定向您的回发在所选索引更改时已经重新加载了页面。回发事件发生在页面呈现之前。您可以在 SelectedIndexChanged 事件中查询数据库并重新填充将呈现的下拉列表,并且您的视图状态将使用现有控件的先前值进行维护。 ASP.Net 页面生命周期一开始可能有点混乱,但您需要掌握基础知识才能到达任何地方,也许可以阅读; msdn.microsoft.com/en-us/library/ms972976.aspx
猜你喜欢
  • 2022-06-15
  • 2015-03-14
  • 2014-07-07
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多