<asp:Button ID="Confirm_btn" CssClass="confirmBtn" runat="server" Text="Generate Presentation" UseSubmitBehavior="true" ClientIDMode="Static" OnClick = "Confirm_Click" /> </td></tr> <tr><td colspan="2" align="center"> <div id="progressbar" style="width:500px"></div> </td></tr> </table> </div> <asp:Label ID="error" runat="server" ClientIDMode="Static" EnableViewState="False" Font-Names="Arial"></asp:Label> </center> </div> </asp:Content> <asp:Content ID="Content3" ContentPlaceHolderID="ScriptContent" runat="server"> <script type="text/javascript"> $.updateProgressbar = function () { //Calling PageMethod for current progress PageMethods.OperationProgress(function (result) { //Updating progress $("#progressbar").progressbar('value', result.progress) //If operation is complete if (result.progress == 100) { //Enable button $("#Confirm_btn").attr('disabled', ''); } //If not else { //Reset timer setTimeout($.updateProgressbar, 500); } }); }; $(document).ready(function () { //Progressbar initialization $("#progressbar").progressbar({ value: 0 }); //Button click event $("#Confirm_btn").click(function (e) { e.preventDefault(); //Disabling button $("#Confirm_btn").attr('disabled', 'disabled'); //Making sure that progress indicate 0 $("#progressbar").progressbar('value', 0); //Call PageMethod which triggers long running operation PageMethods.Operation(function (result) { if (result) { //Updating progress $("#progressbar").progressbar('value', result.progress) //Setting the timer setTimeout($.updateProgressbar, 500); } }); }); }); </script> </asp:Content> **C# Code For the ProgressBar**: /// <summary> /// PageMethod for triggering long running operation /// </summary> /// <returns></returns> [System.Web.Services.WebMethod(EnableSession = true)] public static object Operation() { HttpSessionState session = HttpContext.Current.Session; //Separate thread for long running operation ThreadPool.QueueUserWorkItem(delegate { int operationProgress; for (operationProgress = 0; operationProgress <= 100; operationProgress = operationProgress + 2) { session["OPERATION_PROGRESS"] = operationProgress; Thread.Sleep(1000); } }); return new { progress = 0 }; } /// <summary> /// PageMethod for reporting progress /// </summary> /// <returns></returns> [System.Web.Services.WebMethod(EnableSession = true)] public static object OperationProgress() { int operationProgress = 0; if (HttpContext.Current.Session["OPERATION_PROGRESS"] != null) operationProgress = (int)HttpContext.Current.Session["OPERATION_PROGRESS"]; return new { progress = operationProgress }; } } **C# Code for Button Click Event**: protected void Confirm_Click(object sender, EventArgs e) { // my process run here }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)