2010-01-27 114 views
0

我在asp.net页面中有一组手风琴div(由原型库提供支持)。我想保存一个手风琴的状态,所以当回发事件发生时,同一个div被打开,而不是完全重新加载页面并打开默认的div。从vb.net触发javascript单击事件

我的计划是使用div的toggler click事件函数设置带有打开div的ID的页面控制值,然后在回发调用同一div后触发单击事件(使用持有div的控件的值ID)作为目标。但我不确定如何从vb.net触发一个JavaScript单击事件,但这肯定似乎是一个蹩脚的解决方法。

1)你能告诉我如何从vb.net代码隐藏页面 - 或 - 2)是否有一个更优雅的方式来做到这一点?

感谢

回答

0

由于后面的代码是服务器端,JavaScript是客户端,就没有办法来执行这个混杂。我认为最好的方法是在页面上控制页面,这个页面用于维护JavaScript中的状态,以保证回发(例如asp:HiddenField)。然后,您可以将“打开”div的标识设置到该隐藏字段中,并且在回发时它的值将在视图状态中存活。

然后,你只需要添加一个小函数来调用onload进入hiddenfield,抓住id并设置合适的面板。考虑到所有这些,我建议您调查MultiView控件的用法。这正是这个控件创建来处理的。

0

您可以使用cookie。当手风琴状态改变时,重新写入cookie。加载页面时,加载cookie中的数据并运行一个函数来重置手风琴状态。

这可能比搞乱视图状态容易得多。

1

胡里奥,试试这个:

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "runFunction", "runFunction();" True) 

这将运行名为 “runFunction” 一个JS的功能。我认为你关于将开放div的ID存储在隐藏字段或页面上的东西是一个好主意。我认为将它存储在cookie中是不必要的,除非您希望在用户离开页面后手风琴的状态持续存在。否则,每次请求拥有该cookie的用户,您都会通过电话双向强制传输更多数据。

另一个想法 你可能(也可能应该)利用AJAX。这将意味着对服务器的一个非常轻量级的调用,并且手风琴不会自行重置,因为页面的这一部分不会刷新。