4

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

我在 UpdatePanel 中有一个 TreeView。我在另一个更新面板中有一个文字。当用户点击 TreeView 中的一个节点时,Literal 的内容就会更新。现在,由于整个事情是异步的,所以在点击和更新 Literal 内容之间当然存在时间延迟。在此期间,我想做两件事:

1) 显示一个 UpdateProgress,并且

2)清除Literal的内容

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

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

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

这可能吗?还是客户回电是我唯一的选择?

4

2 回答 2

1

您会想要使用PageRequestManager来自 ASP.NET AJAX 库的。这是 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 组件消失

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

于 2008-12-23T08:06:03.397 回答
0

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

于 2011-04-25T08:45:27.820 回答