簡體   English   中英

從數據庫中檢索數據時如何停止javascript加載器

[英]How to stop the javascript loader when the data retrieved from the database

我正在使用帶有setTimeout函數的javascript在按鈕的onclientclick上顯示GIF。 我正在嘗試從數據庫中檢索數據后停止/隱藏GIF。 到目前為止沒有運氣。 我嘗試了以下方法。 任何幫助是極大的贊賞。

的CSS

.modal {
     position: fixed;
     top: 0;
     left: 0;
     background-color: black;
     z-index: 99;
     opacity: 0.9;
     filter: alpha(opacity=80);
     -moz-opacity: 0.9;
     min-height: 100%;
     width: 100%;
}
.loading {
     font-family: Arial;
     font-size: 10pt;
     width: 200px;
     height: 100px;
     display: none;
     position: fixed;
     opacity: 0.9;
     z-index: 999;
}

Java腳本

function ShowLoader() {
    if (Page_ClientValidate('DownloadReport')) {
        setTimeout(function() {
            var modal = $('divLoader');
            modal.addClass('modal');
            $('body').append(modal);
            var loading = $('.loading');
            loading.show();
            var top = Math.max($(window).height() / 2 - loading[0].offsetHeight / 2, 0);
            var left = Math.max($(window).width() / 2 - loading[0].offsetWidth / 2, 0);
            loading.css({
                top: top,
                left: left
            });
        }, 100);
    } else {

    }
};

      function HideLoader() {
        document.getElementById('<%= divLoader.ClientID%>').style.visibility = "hidden";
    };

在按鈕上單擊“我調用showLoader”,

 <asp:Button ID="btnGenerateRep" CssClass="btnGenerateRep" runat="server" Text="Download Report" ValidationGroup="DownloadReport" OnClientClick="ShowLoader();" OnClick="btnGenerateRep_Click" />

我想從數據庫中檢索數據時停止它

C#代碼

DataTable dt = new DataTable();

dt.Load(cmd.ExecuteReader());

if (dt.Rows.Count > 0) {

    ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "HideLoader()", true);

    string dateTimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");
    string excelFileName = aliasName + "-" + dateTimeStamp + ".xlsx";
    string worksheetsName = "Sheet";

    var format = new ExcelTextFormat();
    format.Delimiter = ',';
    format.EOL = "\r";

    using(ExcelPackage package = new ExcelPackage()) {
        ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(worksheetsName);
        worksheet.Cells["A1"].LoadFromDataTable(dt, true);

        Response.Clear();
        package.SaveAs(Response.OutputStream);
        Response.AddHeader("content-disposition", "attachment; filename=" + excelFileName + ";");
        Response.Charset = "";
        Response.ContentType = "application/vnd.xlsx";
        Response.End();

    }
}     

我正在從C#代碼中調用javascript,但是沒有觸發。 還是從package.SaveAs出現“另存為”對話框時我可以捕獲“保存”命令,然后從那里調用JavaScript?

我還嘗試了在接收數據時隱藏GIF所在的asp:Panel。 仍然沒有運氣。 我真的很感謝您的幫助。 非常感謝

第一步
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "HideLoader()", true); if (dt.Rows.Count > 0) { ... }

因為這意味着如果有0行,它將永遠不會添加腳本,因此永遠不會在客戶端執行腳本,因此也永遠不會隱藏加載。

作為第二項測試HideLoader,看看是否收到警報。

function HideLoader() {
   alert('test');
};

如果收到警報,則表示它被調用。 之后,添加您自己的行,然后檢查是否可行。

另外由於您使用的是jquery.show,也許也只是使用相同的方式來隱藏它? 選中按鈕可以根據需要進行更改。

 $('.loading').hide();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM