我使用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从未显示,因此它违背了给他们一个"加载屏幕"的全部目的

我相信我只是错过了一些东西,我希望有人能指出它是什么

谢谢!

我使用javascript onload引发了一个回发循环,以激发更新进度图像

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事件处理程序时重新添加自己。