代码之家  ›  专栏  ›  技术社区  ›  astorcas

ViewState和客户端更改

  •  1
  • astorcas  · 技术社区  · 14 年前

    谢谢您!

    2 回复  |  直到 14 年前
        1
  •  1
  •   airmanx86    14 年前

    这取决于ListBox何时被数据绑定或ListItem何时被填充。

    通常,当ListBox是在另一个父控件(如中继器)中创建的,并且中继器在Page\u Load事件中绑定了数据时,就会发生这种情况。这意味着在页面加载事件结束之前,列表框实际上不存在。

    ViewState被还原到页面控件的Page\u Init和Page\u Load事件之间的列表框中。如果ListBox的内容是在Load事件期间创建的,这意味着ListBox的ViewState在回发后无法还原内容,并且无法跟踪并自动从回发中选择新的SelectedValue。

    如果本例中的中继器在Page\u Init事件处绑定了数据,则在Page\u Init事件之后,列表框的内容将准备就绪,并且ViewState能够正确还原并自动选择SelectedValue。

    有关详细信息,请查看ASP.NET web窗体的页面生命周期。

    http://msdn.microsoft.com/en-us/library/ms178472.aspx

        2
  •  0
  •   Aristos    14 年前

    所有控件都在回发之间保留它们的更改—除非您以编程方式再次创建它们。

    您的列表框可能会丢失更改,因为您在每次回发时都填充了它。

    试着去做

    if(!IsPostBack)
    {
     PopulateMyListBox()
    }