我有一个下拉列表,当更改时会将新值保存到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();
}
}
}
答案 0 :(得分: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";
}
}
}
答案 1 :(得分:0)
在SelectIndexChanged事件之前触发Page_Load事件。当您更改下拉列表中的值时,ViewState的值仍为null,因此下拉列表设置为“R”?
了解以下MSDN文章讨论页面生命周期:http://msdn.microsoft.com/en-us/library/ms178472.aspx