通过从客户端代码调用服务器端代码来修改UpdatePanel

时间:2013-05-14 20:16:20

标签: javascript asp.net ajax treeview updatepanel

可能没有办法做到这一点,但我想我会问。我对asp.net相对较新,现在玩了大约一个星期。我现在拥有的是一个调用Web服务的页面,轮询它直到完成(在UpdatePanel中显示进度),然后隐藏进度文本,然后通过创建显示结果(带有一些元数据的文件的递归列表) TreeView并将其添加到UpdatePanel。我想要的是单击TreeView中的节点来更新第二个UpdatePanel,其中包含有关刚刚单击的节点的扩展信息(获取服务器端)。我没有看到通过单击TreeNode来调用代码隐藏功能的任何方法,但我可以通过将节点的NavigateUrl设置为“javascript:function([节点的完整路径]”来调用Javascript代码) ”。

但是,在这一点上,我有点难过。 StackOverflow充满了关于如何从javascript(使用WebMethod或等效物)回调代码隐藏的正确回答的问题,但显然你不能调用非静态的代码,这意味着我无法修改页面本身,或者就此而言,访问会话或页面状态。 StackOverflow也充满了关于如何让UpdatePanel刷新自己的javascript请求(__ doPostBack())的问题,但没有任何方式与服务器通信所点击的内容,UpdatePanel将不知道要显示什么。

因此,这个问题,我希望有一个答案:我错过了一些聪明的方法让页面上的javascript触发服务器端功能,能够获取参数并使用它来进行部分回发不同的UpdatePanel?

谢谢!

1 个答案:

答案 0 :(得分:0)

实际上这很简单。只需将LinkBut​​ton置于第二个更新面板(它可以有一个空文本,因此是不可见的),在JavaScript调用该控件的客户端.click()方法,并在ASP.NET句柄服务器端{{1事件。