Перенаправление после обновления панели обновления - PullRequest
2 голосов
/ 17 июля 2009

Как вы думаете, возможно ли обновить панель обновления и сразу после перенаправления ответа (например, загрузки)?

Я пробовал это:

  • невидимая кнопка -> как asyncpostbacktrigger

  • скачать кнопка -> когда она нажата onclientclick нажимает на невидимое кнопка

  • событие клика на невидимая кнопка обновляет обновление панель
  • затем нажмите кнопку загрузки событие запускает загрузку (нормально постбэк который запускает загрузку)

Однако по какой-то причине при нажатии невидимой кнопки клиентским скриптом кнопки загрузки она не обновляет панель обновления.

У вас есть идея, почему она не работает? Или у вас есть другие и более чистые методы?

Вот как объявляются элементы:

     <asp:Button runat="server" ID="ButtonInvisible" Text="" Click="RefreshDisplay" />

<asp:Button runat="server" ID="ButtonDownload" Text="Download" OnClientClick="clickInvisible(this.id)" Click="Download" /><Triggers>
                <asp:AsyncPostBackTrigger ControlID="ButtonInvisible" /></Triggers>

//the javascript
<script type="text/javascript" language="javascript">
function clickInvisible(idButton) {
    document.getElementById('ButtonInvisible').click();

}</script>

 //the methods 
Download(object source, EventArgs e){Response.Redirect("test.txt")}
RefreshDisplay(object source, EventArgs e){ ButtonCancel.Enabled = false;}

Ответы [ 2 ]

0 голосов
/ 05 апреля 2012

У меня была похожая проблема, и я решил ее, используя скрытый трюк IFRAME . Невидимая кнопка не требуется. На самом деле, моя версия даже не требует JavaScript:

protected void Button1_Click(object sender, EventArgs e)
{
    // update some controls in the UpdatePanel
    ...

    // add an iframe which will start the download at the bottom of the UpdatePanel
    var iframe = new HtmlGenericControl("iframe");
    iframe.Style["display"] = "none";
    iframe.Attributes["src"] = "http://...download url...";
    iframe.EnableViewState = false      // we only need the iframe for this one postback
    myUpdatePanel.ContentTemplateContainer.Controls.Add(iframe)
}
0 голосов
/ 17 июля 2009

RefleshDisplay только собирается отключить кнопку ButtonCancel? Тогда вы можете сделать это простым JavaScript без использования триггера:

<asp:Button runat="server" ID="ButtonDownload" Text="Download" OnClientClick="disableCancelButton()" Click="Download" />

<script type="text/javascript" language="javascript">
function disableCancelButton() {
    document.getElementById('<%= ButtonCancel.ClientID %>').disabled = true;
}
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...