Popular Posts
DataList paging //利用PageDataSource來做分頁功能 PagedDataSource pds = new PagedDataSource(); //將PageDataSource綁定SqlDataSource pds.DataSource = SqlDataSource1.Selec... ROBOCOPY: Robust File Copy for Windows -------------------------------------------------------------------------------    ROBOCOPY     ::     Robust File Copy for Windows --------... Grant permission for virtualbox shared folder The regular way of getting access to the files now, is to allow VirtualBox to automount the shared folder (which will make it show up under ...
Blog Archive
Stats
ServerControl : RequestProcesser
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI;
using System.IO;

namespace Bruce.Web.Controls
{
    public class RequestProcesser : Control
    {
        /// <summary>
        /// 送出Request前的動作
        /// </summary>
        public string OnBeginRequest { get; set; }
        /// <summary>
        /// 收到Response後的動作
        /// </summary>
        public string OnEndRequest { get; set; }
        /// <summary>
        /// JavaScript物件名稱
        /// </summary>
        private string ObjectName = "__RequestProcesser";

        protected override void OnPreRender(EventArgs e)
        {
            ScriptManager sm = ScriptManager.GetCurrent(this.Page);
            if (sm == null)
            {
                string script = string.IsNullOrEmpty(this.OnBeginRequest)
                    ? "document.getElementById('" + this.ClientID + "').style.display = 'block';"
                    : string.Format(@"
if((function(){{{0}}})() == false){{
    return false;
}}else{{
    document.getElementById('{1}').style.display = 'block';
    return true;
}}", this.OnBeginRequest, this.ClientID);
                this.Page.ClientScript.RegisterOnSubmitStatement(this.Page.GetType(), "OnBeginRequest", script);
            }
            else
            {
                this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "Processing", string.Format(@"
var {3} = {{
    OnBeginRequest: function() {{
        if((function(){{{1}}})() == false){{
            return false;
        }}else{{
            document.getElementById('{0}').style.display = 'block';
            return true;
        }}
    }},
    OnEndRequest: function() {{
        document.getElementById('{0}').style.display = 'none';
        (function(){{{2}}})();
    }}
}};
//Sys.WebForms.PageRequestManager.getInstance().add_beginRequest({3}.OnBeginRequest);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest({3}.OnEndRequest);
", this.ClientID, this.OnBeginRequest, this.OnEndRequest, ObjectName), true);
                this.Page.ClientScript.RegisterOnSubmitStatement(this.Page.GetType(), "OnBeginRequest", "return " + ObjectName + ".OnBeginRequest();");
            }
            base.OnPreRender(e);
        }

        protected override void Render(HtmlTextWriter writer)
        {
            writer.WriteBeginTag(string.Format("div id=\"{0}\" style=\"display:none;\">", this.ClientID));
            base.Render(writer);
            writer.WriteEndTag("div");
        }
    }
}