выполнить javascript после загрузки файла (RegisterStartupScript)

Я хочу выполнить RegisterStartupScript, вызывающий функцию Javascript после того, как некоторые процессы произойдут в моем коде. Это в основном оформление цикла загрузки, сделанное в CSS3. Я показываю его (с javascript) на кнопках clientclick, когда я знаю, что процесс займет некоторое время, и я скрою его, когда процесс будет завершен. Все работает нормально, но теперь у меня есть процесс, в котором я загружаю файл, используя другую пустую веб-форму, используя response.redirect. Файл загружен отлично, но вызов 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 #

    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 в этом случае ...

Большое спасибо,

javascript,c#,asp.net,css3,

0

Ответов: 0

выполнить javascript после загрузки файла (RegisterStartupScript)

Я хочу выполнить RegisterStartupScript, вызывающий функцию Javascript после того, как некоторые процессы произойдут в моем коде. Это в основном оформление цикла загрузки, сделанное в CSS3. Я показываю его (с javascript) на кнопках clientclick, когда я знаю, что процесс займет некоторое время, и я скрою его, когда процесс будет завершен. Все работает нормально, но теперь у меня есть процесс, в котором я загружаю файл, используя другую пустую веб-форму, используя response.redirect. Файл загружен отлично, но вызов 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 #

    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 в этом случае ...

Большое спасибо,

00JavaScript, C #, asp.net, CSS3,
Похожие вопросы