1

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

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

呼……有问题的背景。

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

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

4

1 回答 1

0

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

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

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

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

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

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

于 2009-08-06T11:16:43.260 回答