2009-07-30 71 views
1

我目前正在制作一个包含一些动态呈现的页面的先进的Web应用。这些页面是标准页面,其中包含一个占位符,其中主要内容由Xml和Xslt的组合显示。ASP.Net Ajax的可折叠扩展ViewState的问题

我最近一直在尝试添加一个ASP.Net Ajax工具包可折叠关语,让崩溃,这是动态呈现的面板延伸。我已经将扩展标记添加到我们的主要xslt模板中,并且一切正常。那么一切都很好,直到发回帖子并且面板回到他们的初始状态。所以,例如,如果我加载了面板折叠页面,然后回发后页面无法重置任何打开的面板,问题是由于我将动态内容存储在视图状态本身以及页面加载后从视图状态检索它,而不是重新渲染Xml。

呼....有背景的问题。

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

所有我想要做的就是互动,并缓存每个面板的状态。任何人都可以提出建议

回答

0

OK,万一别人需要实现类似我现在已经得到了它的工作。

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

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

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

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

真的很简单....应该有这样的想法开始吧!