Попробуйте эту функцию:
function fetchRushIv(officeName){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('OG_Database');
var data=sh.getRange(5,1,sh.getLastRow(),sh.getLastColumn()).getValues();
var html="";
for(var i=0;i';
for(var j=0;j"+data[i][j]+"";
}
html+="";
}
}
html+="
";
return html;
}
Это намного более простая версия вашего HTML. Получите это в первую очередь, и вы можете добавить остальные стили позже.
Вам все еще придется тестировать и отлаживать, но я думаю, что это немного ближе к работе. Я надеюсь, что вы знаете, как использовать console.log для отладки кода.
if (success)
{
lblSuccessMessage.Text = _successMessage;
showMessage(true);
}
else
{
lblSuccessMessage.Text = _failureMessage;
showMessage(false);
}
if(success) {
Threading.Thread.Sleep(200)
Response.Redirect(_downloadURL);
}
Можно вынудить это ожидать, прежде чем это перенаправит путем создания сна потока.
Лучшее, и большая часть удобной для пользователя опции должно позволить пользователю продолжить самостоятельно путем добавления кнопки. Например, Вы могли сделать следующее:
if (success)
{
lblSuccessMessage.Text = _successMessage + "<br /><INPUT TYPE='button' VALUE='Continue...' onClick='parent.location='" + _downloadURL + "'/>";
showMessage(true);
}
else
{
lblSuccessMessage.Text = _failureMessage;
showMessage(false);
}
Вы наклоняетесь, потому что это действие происходит на сервере перед его переданным обратно клиенту. При попытке отправить файл пользователю, можно передать его потоком им использующий Ответ. Запишите (). Это сохранит их на текущей странице так, чтобы можно было показать им сообщение, и они получат подсказку загрузки.
буфер является массивом байтов файла
Response.AddHeader("Content-disposition", "attachment; filename=" & myUserFriendlyFileName)
Response.ContentType = "application/octet-stream"
Response.OutputStream.Write(buffer, 0, buffer.Length)
Вам нужен некоторый клиентский код, чтобы сделать перенаправление.
Мое предпочтение состояло бы в том, чтобы встроить некоторый JavaScript, чтобы сделать перенаправление.
Так, скройте форму, отобразите сообщение, и (на самом сыром уровне) используют элемент управления литерал для добавления некоторого текста как это к странице.
<script>
location.href = "http://otherServerName/fileToDownload";
</script>
Можно найти, что это перенаправление происходит, прежде чем страница имела изменение в дисплее - в этом случае, попробуйте это в теге основного текста HTML (отметьте различные типы кавычек):
<body onload='location.href="http://otherServerName/fileToDownload";'>
Помните, что каждое сообщение назад на самом деле подает новую страницу клиенту, не просто изменив некоторые свойства на текущей странице (даже если ASP.NET очень старается притвориться, что это точно так же, как форма окон),
Лично я предпочитаю иметь отдельную страницу для каждого этапа процесса, вместо того, чтобы пытаться сделать все на одной странице путем показа/сокрытия различных битов - но я мог безнадежно устареть.
Править: если они отключили JavaScript, Вы могли бы просто предоставить ссылку для загрузки файла.
Скройте его клиентский с JavaScript и затем сделайте перенаправление или сделайте две обратных передачи: первая обратная передача, которая скроет форму и покажет слова благодарности и второе, чтобы сделать перенаправление однажды слова благодарности, была представлена на экран.
Или, Вы могли сделать JavaScript window.open вместо перенаправления, которое указывает месту назначения после обратной передачи, и сокрытие формы завершается.
Непосредственно в asp.net Вы наклоняетесь, делают это, но путь вокруг состоит в том, чтобы или использовать JS (как отправляется на здесь), или можно использовать IFrame, который загружает файл, который будет загружен - пользователь будет видеть слова благодарности, затем Открываться/сохранять диалог...
Возможно, отправляя Заголовок Перенаправления вручную, со многими секундами для ожидания путь состоит в том, чтобы пойти для Вас?
Response.AddHeader("Redirect", "3; URL=" + _downloadURL")
Править
После чтения Вашего вопроса снова, я, возможно, неправильно понял Вас немного.
Вы, кажется, хотите задержать целый процесс так, чтобы панель "Thank You" могла быть отображена. Это оставляет Вас двумя возможностями:
Response.Redirect()
. Это - более современный способ сделать это.Response.AddHeader()
заставить ту страницу уйти автоматически. Это немного старомодно, но надежно.У Вас не может действительно быть комбинации обоих, потому что это было бы непоследовательно для тех пользователей, которым выключили JavaScript.
Я закончил тем, что делал предложение abrudtkuh, просто добавив ссылку к сообщению успеха... я также реализую перенаправление JavaScript для автоматического запуска загрузки, но я не хотел полагаться только на JavaScript, следовательно кнопка, отображаемая страницей.
Спасибо за подсказки все - Вы все качаетесь!
аплодисменты greg