我有一个下拉列表,当更改时会将新值保存到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 回答
如果不是回发,则更改Page_Load方法以绕过下拉列表代码 .
Page_Load事件在SelectedIndexChanged事件之前触发 . 当您更改下拉列表中的值时,ViewState的值仍然为空,因此下拉列表设置为“R”?
故事看看下面讨论页面生命周期的MSDN文章:http://msdn.microsoft.com/en-us/library/ms178472.aspx