回发前的 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 为空

ASP.NET,在回发时显示加载消息

强制回发 Asp.Net

ASP.NET 回发在 URL 重写中产生问题?

ASP.NET 在 asp:ImageButton 上没有回发

重置会话超时而不在 ASP.Net 中进行回发