回发前的ASP.NET TreeView javascript

时间:2008-12-23 06:36:30

标签: asp.net javascript ajax treeview updatepanel

我正在尝试使用TreeViews和UpdatePanels编写我认为相当常规的AJAX模式。我的情况是这样的:

我在UpdatePanel中有一个TreeView。我在另一个UpdatePanel中有一个Literal。当用户单击TreeView中的节点时,将更新Literal的内容。现在,由于整个事情是异步的,因此点击和更新Literal内容之间当然存在时间差。在此期间,我想做两件事:

1)显示UpdateProgress,

2)清除文字的内容

这样,当新文本异步加载时,用户不必盯着旧内容。

我似乎无法找到一种简单的方法来完成(2)。我一直在阅读客户端回调并使用GetCallbackEventReference,但对于看似简单的问题,这似乎是一种非常复杂的方法。

理想情况下,我想单独留下TreeView来完成它的工作。我不想自己获取内容并使用JS将它们添加到TreeView中。我只想检测客户端的节点更改事件,清除Literal,让TreeView正常运行。

这可能吗?或者客户回电我唯一的选择?

2 个答案:

答案 0 :(得分:1)

您将希望使用ASP.NET AJAX库中的PageRequestManager。以下是PRM的MSDN参考 - http://msdn.microsoft.com/en-us/library/bb311028.aspx

只是为了警告微软已经声明TreeView在UpdatePanel中可能存在问题,你也希望非常小心性能,特别是如果你有一个大型TreeView(请参阅我的有关优化UpdatePanel性能的文章 - http://www.aaron-powell.com/blog.aspx?id=1195)。你应该真正看一下jQuery插件(例如:http://bassistance.de/jquery-plugins/jquery-plugin-treeview/)。

但要真正回答你的问题,你需要:

  • 有一个BeginRequest事件处理程序,然后清除你的文字,甚至可以显示加载(我不是UpdateProgress的粉丝,我更喜欢我自己做的更精细的控制)
  • 使用EndRequest事件确保加载组件消失

您还可以在页面上将TreeView作为第二个UpdatePanel的AsyncPostbackTrigger,或者在TreeView的异步回发期间调用其上的Update方法

答案 1 :(得分:0)

我有同样的问题并通过创建一个隐藏的html元素来修复它,该元素与我想要隐藏的区域重叠。我在onSubmit上显示它并在回发期间将其隐藏在window.onload中。它不漂亮,但它的工作原理应该很快。