下拉列表不会在后续调用中更新所选项目

时间:2013-02-06 03:34:10

标签: c# asp.net

我有以下代码

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();上放置一个断点,那么该值实际上永远不会在第一次调用时发生变化。它将更改一次到所选项目值,但即使在后续页面调用中选择了另一个项目,也不会更改。

  1. 第一页加载 - ddlyear = 1000
  2. 更改为其他选项,让我们说1001
  3. 页面重新加载,ddlyear = 1001
  4. 更改为其他选项,例如1002
  5. 页面重新加载,ddlyear = 1001 不是1002

1 个答案:

答案 0 :(得分:1)

默认情况下,DropDownList会保留其SelectedItem 您不需要为此编写任何代码。删除您添加的代码,它应该像您期望的那样工作。

如果您有兴趣知道代码失败的原因,那是因为Load事件在调用任何事件处理程序之前触发。您在此处将所选值重置为ViewState中的值。