`
jiasongmao
  • 浏览: 670313 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

为使用微软AJAX框架的所有页面添加正在加载的遮罩层效果

 
阅读更多

如果多个页面使用了微软的AJAX框架,为了统一为所有UpdatePanel添加刷新遮罩效果,可以使用如下代码:

 

protected void Page_LoadComplete(object sender, EventArgs e)
        {

            if (IsAjaxRequest() == false)
            {

                List<UpdatePanel> updatePanels = this.Form.GetAllControls().OfType<UpdatePanel>().ToList();
                string updatePanelsId = "";
                foreach (UpdatePanel panel in updatePanels)
                {
                    updatePanelsId += panel.ClientID + ";";                    
                }
                try
                    {
                        this.Form.Attributes["updatePanelsId"] = updatePanelsId.Trim(';');
                    }
                    catch { }


            }

        }

        /// <summary>
        /// 判断本次请求是否为AJAX请求【微软AJAX框架】
        /// </summary>
        /// <returns></returns>
        protected bool IsAjaxRequest()
        { 
            string micAjaxToken = Page.Request.Headers["X-MicrosoftAjax"];
            string xhrToken = Page.Request.Headers["X-Requested-With"];
            if ("Delta=true".Equals(micAjaxToken) && "XMLHttpRequest".Equals(xhrToken))
            {
                return true;
            }
            return false;
        }

 

$(function () {
    initUpdateProgressPanel();
});

function initUpdateProgressPanel() {


    var updatePanelsId = $("form").attr("updatePanelsId");
    if (updatePanelsId == undefined || updatePanelsId == null || updatePanelsId.length == 0) {
        return;
    }

    updatePanelsId = updatePanelsId.split(';');

    $.each(updatePanelsId, function (i, item) {
        //id="ctl07" class="loadingbox" updatepanelid="UpdatePanel2" style="display: none;"
        var progressPanelId = 'progressPanel' + i;
        var progressPanel = $("<div id='" + progressPanelId + "' class='loadingbox' updatepanelid='" + item + "'><img src='/Images/loading.gif'></div>");
        $("form").append(progressPanel);

        $create(Sys.UI._UpdateProgress, { "associatedUpdatePanelId": item, "displayAfter": 0, "dynamicLayout": true }, null, null, $get(progressPanelId));


        var updatePanel = $("#" + item);
        matchUpdatePanelForProgress(updatePanel, progressPanel);

        updatePanel.resize(function () {
            var progressPanel = $(this).attr("id");
            progressPanel = $("div[updatepanelId='" + progressPanel + "']");
            matchUpdatePanelForProgress($(this), progressPanel);
        });
    });
}

function matchUpdatePanelForProgress(updatePanel, progressPanel) {
    var style = "display:none;opacity:0.5; -moz-opacity:0.5; filter:alpha(opacity=50);background-color:#aaccff;z-index:9999;position:absolute;width:" + updatePanel.width() + "px;height:" + updatePanel.height() + "px;";
    style = style + "left:" + updatePanel.offset().left + "px;top:" + updatePanel.offset().top + "px;";
    var img = $(progressPanel).find("img");
    var imgMarginLeft = updatePanel.width() / 2 - 80;
    var imgMarginTop = updatePanel.height() / 2 - 10;
    img.attr("style", "margin-left:" + imgMarginLeft + "px;margin-top:" + imgMarginTop + "px");
    $(progressPanel).attr("style", style);
}

 

public static class ControlExtensions
    {
        public static IEnumerable<Control> GetAllControls(this Control ctrl)
        {
            foreach (Control c in ctrl.Controls)
                yield return c;
            foreach (Control c in ctrl.Controls)
                foreach (Control cc in GetAllControls(c))
                    yield return cc;
        }
    }

 

 

 

 

分享到:
评论

相关推荐

    jsp页面加载之遮罩层

    "jsp页面加载之遮罩层"这个主题关注的是在JSP页面加载过程中,如何使用遮罩层来提升用户体验,尤其是在等待页面完全加载时提供一种视觉反馈,让用户知道页面正在处理。 首先,遮罩层通常是一个半透明的div元素,...

    图片点击放大缩小遮罩层以及 ajax加载中防止重复提交加载遮罩层

    当用户点击缩略图时,图片应该能够以全尺寸显示,并在页面上添加一个半透明的遮罩层,以突出显示当前的图片并提供更好的观看体验。实现这一功能通常需要用到JavaScript库,如jQuery,配合CSS来完成。JavaScript部分...

    LoadingMask(WPF加载数据loading遮罩)

    在WPF应用开发中,当用户等待数据加载时,为了提供更好的用户体验,通常会使用一个...通过解压并运行该项目,你可以看到具体的操作步骤和实现方式,这对于学习和理解如何在自己的WPF项目中使用加载遮罩非常有帮助。

    页面加载中(遮罩层支持ajax、模拟查询、模拟保存、模拟导入、模拟隐藏、模拟刷新、全屏遮罩、兼容ie、谷歌、火狐等浏览器)2016.09.13.zip

    2. **页面加载中遮罩层**:遮罩层通常是一个半透明的div,覆盖在网页上,用于提示用户页面正在加载或处理中,避免用户在数据加载完成前进行不必要的操作。它可以提供更好的用户体验,让用户知道系统正在进行后台工作...

    图片浏览(遮罩层的应用)ajax

    首先,遮罩层(Mask Layer)是网页设计中一种重要的视觉效果,它通常用于创建半透明的覆盖层,以突出显示特定区域,例如在图片浏览时,遮罩层可以作为背景,使得用户能专注于当前查看的图片,同时保持对网页其他部分...

    微软ASP.NET AJAX框架剖析

    ASP.NET AJAX框架是微软针对AJAX(Asynchronous JavaScript and XML)技术开发的一个全面的Web开发框架,旨在提供一个高效、易于使用的开发环境,以创建以用户为中心的Web应用程序。该框架于2007年1月正式发布,作为...

    jquery遮罩,ajax时调用

    遮罩层是一种在页面上覆盖一层半透明或者特定颜色的元素,以达到屏蔽用户操作的效果。它通常用于加载大图、弹出框或者在Ajax请求期间,让用户知道当前页面正在进行后台操作,应稍作等待。 接下来,我们将探讨如何在...

    动态上传文件遮罩层

    遮罩层,又称蒙层或加载提示,是网页设计中的一个交互元素,用于暂时覆盖页面内容,提供一种视觉上的专注感和等待提示。当用户执行某些耗时操作,如文件上传时,遮罩层会显示在页面上,让用户知道后台正在进行处理。...

    适合.net使用遮罩层

    【标题】:“适合.net使用遮罩层”指的是在.NET框架下开发Web应用时,用于创建一个覆盖整个页面的半透明层,通常称为“遮罩层”或“加载层”。这种技术在网页或应用程序加载数据、执行异步操作或进行用户交互时提供...

    手机网页遮罩动态加载效果.zip

    遮罩层通常是一个半透明的覆盖层,覆盖在网页内容之上,用于提示用户页面正在加载或者进行其他操作。在手机网页上,遮罩层可以有效地阻止用户在加载过程中的误操作,同时通过动态加载效果提供反馈,让用户知道页面...

    记录页面停留时间和遮罩层

    页面停留时间可以帮助开发者和网站所有者了解用户对特定内容的兴趣程度,而遮罩层则常用于提示、加载或阻挡背景干扰,提升交互体验。下面将详细讲解这两个知识点。 **一、记录页面停留时间** 页面停留时间的记录...

    asp.net 遮罩层 asp.net 遮罩层

    ASP.NET 是一种基于微软.NET Framework的服务器端网页开发技术,用于构建动态、数据驱动的Web应用程序。在ASP.NET中,我们经常会遇到需要实现遮罩层(Modal)的需求,以提供更好的用户体验,例如显示警告信息、加载...

    JS变灰页面显示遮罩层登录窗口,使页面无法操作

    这种效果通常通过JavaScript(JS)配合CSS来实现,其中涉及到的技术包括页面元素禁用、遮罩层创建以及Ajax无刷新加载。下面我们将详细讨论这些知识点。 1. **JS变灰页面**: 在JavaScript中,我们可以使用DOM操作...

    AJAX框架 v4.0

    在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的技术。这种技术极大地提升了用户体验,因为它减少了页面刷新,使得用户界面更加...

    遮罩层js代码

    在网页设计和开发中,遮罩层(Mask Layer)是一种常用的技术,用于在用户与页面交互时提供一种视觉效果,比如加载提示、弹窗信息或者背景模糊等。本主题聚焦于"遮罩层js",这是一个基于jQuery和sliphover库实现的...

    jQuery鼠标经过图片遮罩层效果.zip

    总之,"jQuery鼠标经过图片遮罩层效果"是一种常见的网页交互设计手法,通过jQuery和CSS的结合,为用户带来了更生动的浏览体验。学习并理解这一效果的实现,有助于提升网页开发技能,尤其是对于增强用户界面的吸引力...

    jQuery弹出登录遮罩层效果

    2. **CSS样式**:使用CSS为遮罩层和登录框添加样式,包括定位、尺寸、颜色等。遮罩层应覆盖整个屏幕,而登录框则居中显示。 ```css #mask { position: fixed; top: 0; left: 0; width: 100%; height: 100%; ...

    微软.net的ajax框架安装补丁包

    微软的.NET AJAX框架是开发高效、交互性强的Web应用程序的重要工具,它允许开发者在不刷新整个页面的情况下更新网页部分,从而提升用户体验。该框架的核心组件是ASP.NET UpdatePanel,它是实现服务器端Ajax功能的...

    ajax 提交小例子.带表单验证和遮罩等待效果

    当用户点击提交按钮时,这个插件会显示一个半透明的遮罩层,阻止用户与页面其他部分交互,展示加载图标(如`loading.gif`),表示后台处理正在进行中,这样可以提升用户感知的系统响应性。 具体实现过程中,首先在...

    json ajax ajax框架

    AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下更新部分网页内容的技术。虽然XML最初是AJAX数据传输的一部分,但实际应用中,JSON因其简洁、易读和高效的特点,已经成为AJAX通信中更...

Global site tag (gtag.js) - Google Analytics