我有以下代码
Page_Load () {
if (!IsPostBack)
{
//data binding to ddl year
} else {
if (ViewState["ddlyear"] != null)
{
ddlyear.SelectedValue = ViewState["ddlyear"].ToString();
}
}
}
ddlyear_SelectedIndexChanged {
ViewState["ddlyear"] = ddlyear.SelectedItem.Value.ToString();
}
发生了错误。
在ddlyear中加载页面选择项目,重新加载页面,并在ddl中正确显示该项目。
如果我更改显示,则所选项目不会更改。
如果我在ddlyear.SelectedItem.Value.ToString();
上放置一个断点,那么该值实际上永远不会在第一次调用时发生变化。它将更改一次到所选项目值,但即使在后续页面调用中选择了另一个项目,也不会更改。
即
答案 0 :(得分:1)
默认情况下,DropDownList
会保留其SelectedItem
您不需要为此编写任何代码。删除您添加的代码,它应该像您期望的那样工作。
如果您有兴趣知道代码失败的原因,那是因为Load
事件在调用任何事件处理程序之前触发。您在此处将所选值重置为ViewState
中的值。