首页 文章

将下拉列表选定值保存到ViewState

提问于
浏览
1

我有一个下拉列表,当更改时会将新值保存到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();

    }       

}
}

2 回答

  • 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";
            }
        }
    }
    
  • 0

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

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

相关问题