ajaxToolkit:CollapsiblePanelExtender在AJAX UpdatePanel刷新时不维护展开/折叠状态

时间:2011-11-12 03:03:09

标签: asp.net ajaxcontroltoolkit collapsiblepanelextender

我有一个ajaxToolkit:CollapsiblePanelExtender以及它控制的两个asp:UpdatePanels(单击时会展开另一个面板)。

在我开始使用计时器进行AJAX更新之前,效果很好。页面更新......并且CollapsiblePanelExtender折叠:-P

任何人都知道如何让这个控件保持它正在扩展的面板的状态?

2 个答案:

答案 0 :(得分:3)

我记得遇到过这个问题。

CollapsiblePanelExtender有一个属性ClientState,似乎无法在ViewState中跟踪和维护。

您应该能够在HiddenField(或ViewState或Session,如果您愿意)中手动跟踪和维护该值,并在AJAX更新时将CPE.ClientState恢复为该值。

UPDATE
找到一个资源,表明您只需要设置Collapsed和ClientState属性。 http://weblogs.asp.net/ashicmahtab/archive/2008/11/21/act-collapsiblepanelextender-how-to-collapse-expand-programmatically.aspx

答案 1 :(得分:0)

我在另一种情况下遇到过这种情况......

  1. 面板折叠计时器刻度,并开始部分回发
  2. 用户在回发正在进行时展开面板
  3. 部分回发结束,面板状态为 返回“折叠”,因为viewstate 维护 - 它是 刚回到部分开头的地方 回发。
  4. 您希望如何处理这种情况取决于您的情况,但在我的情况下,当用户展开或折叠面板时我cancel the asynchronous postback。因为它是一个定时器,每隔几秒更新一次当前值,所以无论如何它都会很快再次运行,所以我可以“丢失”一个。

    或者,您可以使用面板的add_expanding和add_collapsing事件以及检查Sys.WebForms.PageRequestManager.getInstance()。get_isInAsyncPostBack()来禁用回发期间的展开/折叠功能。