Search code examples
c#asp.netdatasetupdateprogress

Show UpdateProgress until the DataSet is filled


I'm using a ProgressBar as below:

<ajaxToolkit:ModalPopupExtender ID="mpeWait" runat="server" Drag="false" PopupControlID="pnlWaitDialog"
    TargetControlID="btnDummy" EnableViewState="true" BackgroundCssClass="modalBackground">
</ajaxToolkit:ModalPopupExtender>
<asp:Button runat="server" ID="btnDummy" Style="display: none;" />
<div id="pnlWaitDialog" runat="server" 
    style="display: none; background-color: Transparent; position: absolute;">
    <div align="center">
        <img src="Images/Loading.gif" alt="" />
    </div>
</div>

Now, I need to show that if the DataSet (for the export to Excel) takes time to fill. Is it possible to show that?


Solution

  • I'm assuming that the DataSet is populated on some click event of some sort? Have you tried using the actual UpdateProgress control?

    <asp:UpdateProgress ID="prgLoadingStatus" runat="server" DynamicLayout="true">
        <ProgressTemplate>
            <div id="overlay">
                <div id="modalprogress">
                    <div id="theprogress">
                        <asp:Image ID="imgWaitIcon" runat="server" ImageAlign="AbsMiddle" ImageUrl="/images/wait.gif" />
                        Please wait...
                    </div>
                </div>
            </div>
        </ProgressTemplate>
    </asp:UpdateProgress>  
    

    Here's the CSS, if you need it:

    #overlay {
        position: fixed;
        z-index: 99;
        top: 0px;
        left: 0px;
        background-color: #f8f8f8;
        width: 100%;
        height: 100%;
        filter: Alpha(Opacity=90);
        opacity: 0.9;
        -moz-opacity: 0.9;
    }            
    #theprogress {
        background-color: #fff;
        border:1px solid #ccc;
        padding:10px;
        width: 300px;
        height: 30px;
        line-height:30px;
        text-align: center;
        filter: Alpha(Opacity=100);
        opacity: 1;
        -moz-opacity: 1;
    }
    #modalprogress {
        position: absolute;
        top: 40%;
        left: 50%;
        margin: -11px 0 0 -150px;
        color: #990000;
        font-weight:bold;
        font-size:14px;
    }