【问题标题】:ASP.Net Ajax Collapsible Extender ViewState IssueASP.Net Ajax 可折叠扩展器 ViewState 问题
【发布时间】:2009-07-30 21:51:53
【问题描述】:

我目前正在开发一个包含许多动态呈现页面的高级 Web 应用程序。这些页面是标准页面,其中包含一个占位符,主要内容通过 Xml 和 Xslt 的组合呈现到该占位符中。

我最近一直在尝试添加一个 ASP.Net Ajax Toolkit 可折叠终端,以允许动态呈现的面板的折叠和扩展。我已将扩展器标记添加到我们的主 xslt 模板中,一切都很好。一切都很好,直到发生回发并且面板返回其初始状态。因此,例如,如果我在面板折叠的情况下加载页面,然后在回发后页面无法重置任何打开的面板,问题是由于我将动态内容存储在视图状态本身并且一旦页面加载完成从视图状态中检索它,而不是重新渲染 Xml。

呼....问题的背景。

现在是主要问题。您到底如何与 Javascript 中的扩展程序进行交互。我花了几天时间确信我可以在页面变量客户端缓存状态,然后重新应用状态回发。但是,似乎没有关于如何完成此操作的文档或知识。我发现最好的是一些非常简单的 javascript,它允许您注册几个事件以在面板展开或折叠时捕获。

我想要做的就是交互和缓存每个面板的状态。任何人都可以提出任何建议吗?

【问题讨论】:

    标签: asp.net ajax collapsiblepanelextender


    【解决方案1】:

    好的,以防万一其他人需要实现类似的效果,我现在已经开始工作了。

    经过大量研究,我发现您可以使用here 中描述的任一方法连接到一些客户端事件。

    所以我决定最好的方法是在 Page_Load() 事件中以编程方式将几个隐藏字段 (ASP.Net HiddenField) 添加到页面,并将每个扩展器的名称作为分隔字符串添加到一个字段中,然后每个扩展器的一个字段,用于保存扩展器状态。一旦页面回发,就会从 Request.Form 对象中检索每个扩展程序隐藏字段的值(其中的键是隐藏字段 ID),否则如果是初始加载,则只需处理默认值。

    然后我刚刚创建了一个简单的客户端脚本,它处理 onExpand 和 onCollapse 事件并更新特定扩展器隐藏字段的值。

    在客户端脚本的 pageLoad 事件中,我只是根据它的隐藏字段值设置了 entenders 状态。

    真的很简单……一开始就应该这么想!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-14
      • 2015-03-29
      相关资源
      最近更新 更多