【发布时间】: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