下载文件后执行javascript(RegisterStartupScript)

时间:2017-03-24 15:23:44

标签: javascript c# asp.net css3

我希望在我的代码后面发生某些进程后执行一个调用Javascript函数的RegisterStartupScript。它基本上是一个用CSS3制作的装载循环装饰。我在按钮clientclick上显示它(使用javascript),当我知道该过程将需要一段时间并且我在过程完成时隐藏它。一切正常,但现在我有一个过程,我使用response.redirect使用另一个空的webform下载文件。文件下载正常,但RegisterStartupScript调用不起作用。我理解响应是问题,但我也不需要在解决方法中解决这个问题(我不想改变整个方式,因为它是在许多其他页面和进程中实现的。我将提供相关的代码(不是所有),万一你可以给我一个解决它的直接方法。

的Javascript

function LoadingLoopOn()
{
    $('#outerAlignId').addClass("outerAlign");
    $('#middleAlignId').addClass("middleAlign");
    $('#innerAlignId').addClass("innerAlign");
    $('#OutterCircleId').addClass("OutterCircle");
    $('#InnerCircleId').addClass("InnerCircle");
    $('#Loadinglbl').addClass("LoadingLabelStyle");
}

function LoadingLoopOff()
{
    $('#outerAlignId').removeClass("outerAlign");
    $('#middleAlignId').removeClass("middleAlign");
    $('#innerAlignId').removeClass("innerAlign");
    $('#OutterCircleId').removeClass("OutterCircle");
    $('#InnerCircleId').removeClass("InnerCircle");
    $('#Loadinglbl').removeClass("LoadingLabelStyle");
}

HTML(它位于母版页上,能够在每个网页中使用它)

<asp:Panel ID="outerAlignId" ClientIDMode="Static" runat="server" CssClass="outerAlign">
    <div id="middleAlignId" class="middleAlign">
        <div id="innerAlignId" class="innerAlign">
            <div id="OutterCircleId" class="OutterCircle"></div>
            <div id="InnerCircleId" class="InnerCircle"></div>
            <asp:Label ID="Loadinglbl" ClientIDMode="Static" runat="server" Text="Loading..." CssClass="LoadingLabelStyle"></asp:Label>
        </div>
    </div>
</asp:Panel>

HTML按钮示例我想用它

<asp:ImageButton ID="ExportExId" ClientIDMode="Static" runat="server" OnClientClick="LoadingLoopOn();"  OnClick="ExportExId_Click" CssClass="..." ImageUrl="..." />

CS#Code落后于

    protected void ExportExId_Click(object sender, ImageClickEventArgs e)
    {
        //...
        //Many code and DB treatment goes here, to finally get a temporally Excel file in the server
        //..

        //I call the page with the file name and path
        Response.Redirect(String.Format("DownloadForm.aspx?FileName={0}&Path={1}", fileExported.Name, "Temp" + UserName));

        //This piece of code must be excuted in its webform after the redirect (once ee finished)
        ScriptManager.RegisterStartupScript(this, GetType(), "LoadingLoopOff", "LoadingLoopOff();", true);

    }

正如我在评论中所标记的,可能的解决方案可能是AJAX。进行ajax调用以强制页面更新,然后处理该函数(在加载时),或通过此ajax调用直接调用该函数。问题是我不知道如何在这种情况下使用AJAX ...

非常感谢,

0 个答案:

没有答案