回发前的 ASP.NET TreeView javascript
Posted
技术标签:
【中文标题】回发前的 ASP.NET TreeView javascript【英文标题】:ASP.NET TreeView javascript before postback 【发布时间】:2010-09-28 03:33:19 【问题描述】:我正在尝试使用 TreeViews 和 UpdatePanels 编写我认为是相当常规的 AJAX 模式的代码。我的情况是这样的:
我在 UpdatePanel 中有一个 TreeView。我在另一个更新面板中有一个文字。当用户点击 TreeView 中的一个节点时,Literal 的内容就会更新。现在,由于整个事情是异步的,所以在点击和更新 Literal 内容之间当然存在时间延迟。这段时间,我想做两件事:
1) 显示更新进度,并且
2) 清除Literal的内容
这样用户在异步加载新文本时不必盯着旧内容。
我似乎想不出一个简单的方法来完成 (2)。我一直在阅读客户端回调并使用 GetCallbackEventReference,但对于看似简单的问题,这似乎是一种非常复杂的方法。
理想情况下,我想让 TreeView 独自完成它的工作。我不想自己获取内容并使用 JS 将它们添加到 TreeView。我只想在客户端检测节点更改事件,清除 Literal,然后让 TreeView 正常运行。
这可能吗?还是客户回电是我唯一的选择?
【问题讨论】:
【参考方案1】:我遇到了同样的问题,并通过创建一个与我要隐藏的区域重叠的隐藏 html 元素来解决它。我在回发期间显示它 onSubmit 并将其隐藏在 window.onload 中。它不漂亮,但它可以工作并且应该很快。
【讨论】:
【参考方案2】:您会想要使用来自 ASP.NET AJAX 库的PageRequestManager
。这是 PRM 的 MSDN 参考资料 - http://msdn.microsoft.com/en-us/library/bb311028.aspx。
请注意,Microsoft 已声明 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
事件确保Loading 组件消失
您还可以将 TreeView 设为页面上第二个 UpdatePanel 的 AsyncPostbackTrigger
,或者在 TreeView 的异步回发期间对其调用 Update 方法
【讨论】:
以上是关于回发前的 ASP.NET TreeView javascript的主要内容,如果未能解决你的问题,请参考以下文章
回发后 DataList 的 ASP.NET / DataItem 为空