0

我有以下代码

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();
}

继承人的错误。

  • load page select item in ddlyear,它重新加载页面,并正确显示 ddl 中的项目。

  • 如果我更改显示,所选项目将不会更改。

如果我在值上放置一个断点,ddlyear.SelectedItem.Value.ToString();实际上永远不会从第一次调用中改变。它会更改一次,更改为所选项目的值,但即使在后续页面调用中选择了另一个项目也不会更改。

IE

  1. 第一页加载 - ddlyear = 1000
  2. 更改为另一个选项,比如说 1001
  3. 页面重新加载,ddlyear = 1001
  4. 更改为另一个选项,比如说 1002
  5. 页面重新加载,ddlyear = 1001而不是 1002
4

1 回答 1

1

ADropDownList将默认维护其SelectedItem.
您无需为此编写任何代码。删除您添加的代码,它应该可以按预期工作。

如果您有兴趣了解代码失败的原因,那是因为Load事件在调用任何事件处理程序之前触发。在这里,您将选定的值重置为ViewState.

于 2013-02-06T03:54:38.280 回答