【问题标题】:Saving dropdownlist selected value to ViewState将下拉列表选择的值保存到 ViewState
【发布时间】:2011-12-13 22:31:34
【问题描述】:

我有一个下拉列表,当更改时会将新值保存到 ViewState 变量中,这样在回发后,下拉列表将从 ViewState 中检索它的选定值(如果之前设置过)。

当它试图将 DropDownList1_SelectedIndexChanged 中的选定值存储到 ViewState 时,它​​总是插入原始值而不是更新的值。在这种情况下,ViewState 始终为“R”并且永远不会根据其他选定的值而改变。

有什么想法吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication11
{
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (ViewState["List1_Value"] != null)
        {
            DropDownList1.SelectedValue = ViewState["List1_Value"].ToString();

        }
        else
        {
            DropDownList1.SelectedValue = "R";

        }

    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        ViewState["List1_Value"] = DropDownList1.SelectedValue.ToString();

    }       

}
}

【问题讨论】:

  • 您确定问题出在保存到视图状态吗?不是因为 if 语句返回 FALSE 而总是 R 吗?
  • if 语句在第一个 page_load 上返回 false。然后,当更改所选值时,ViewState会保存列表值,但仅保存原始的“R”,而不是选择的其他值,从而从未选择触发SelectedIndexChanged。第二轮,if 语句为真,列表从 ViewState 检索它的值,令人讨厌的是它仍然是“R”,因为 selectedIndexChanged 不会将新选择的值保存到 ViewState。

标签: c# .net drop-down-menu viewstate selectedindexchanged


【解决方案1】:

更改Page_Load方法,在不是回发时绕过下拉列表代码。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if (ViewState["List1_Value"] != null)
        {
            DropDownList1.SelectedValue = ViewState["List1_Value"].ToString();
        }
        else
        {
            DropDownList1.SelectedValue = "R";
        }
    }
}

【讨论】:

    【解决方案2】:

    Page_Load 事件在 SelectedIndexChanged 事件之前触发。当你更改下拉列表中的值时,ViewState 的值仍然为空,所以下拉列表设置为“R”?

    看看下面讨论页面生命周期的 MSDN 文章:http://msdn.microsoft.com/en-us/library/ms178472.aspx

    【讨论】:

    • 好的,但是第二轮 ViewState 的值为“R”,这意味着 ViewState 在页面重新加载之前已保存。只需要弄清楚如何在 ViewState 中获取不同的值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多