我使用javascript onload引发了一个回发循环,以激发更新进度图像
本文关键字:循环 图像 更新 一个 onload javascript | 更新日期: 2023-09-27 18:00:38
我有一个asp.net页面,需要基于目录结构填充树视图。我尝试使用UpdateProgress加载图像,而不是让用户在创建节点时盯着空白页面。
在互联网上搜索各种线索给了我一些不同的尝试,但都有自己的问题,我似乎无法解决。
选项1使用以下javascript:
function pageLoad() {
__doPostBack('btnBuildTree', '');
}
这个事件是自动连接的,所以我不需要向body元素添加onload标记。为了测试我的代码,后面看起来像这样:
protected void btnBuildTree_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(5000);
// minor code here to know it did something
}
当我这样设置它时,页面加载,更新进度按照我的意愿执行,当btnBuildTree_Click完成UpdatePanel刷新时,一切都很好,除了它立即启动另一个回发,激发javascript pageLoad()函数,这会导致btnBuildTree回发,等等
选项2只有一个更改,那就是javascript:
function buildTree() {
__doPostBack('btnBuildTree', '');
}
我加上这个标签:
<body onload="buildTree()">
通过此设置,页面加载,btnBuildTree_Click事件启动并完成其所有工作,完成后,它不会导致另一次回发,因此我没有循环。唯一的缺点是UpdateProgress从未显示,因此它违背了给他们一个"加载屏幕"的全部目的
我相信我只是错过了一些东西,我希望有人能指出它是什么
谢谢!
pageLoad()函数用于所有回发,包括异步回发。在pageLoad()函数中,您可以添加一个逻辑来判断树视图是否已显示。
假设您将在树视图显示后删除加载指示器,您可以执行以下操作:
function pageLoad() {
var loading = $("#treeview-loading"); // Using jQuery to find the loading indicator.
if (loading.get(0)) {
__doPostBack('btnBuildTree', '');
}
}
如何添加用于页面加载的js?
如果使用RegisterStartupScript
或类似方法将其添加到Page_Load
上,请添加!IsPostBack
检查,这样它就不会在每次调用btnBuildTree_Click事件处理程序时重新添加自己。