Я хочу выполнить 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 в этом случае ...
Большое спасибо,
Я хочу выполнить 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,