刷新更新面板后重定向

时间:2009-07-17 06:44:17

标签: c# asp.net ajax updatepanel

您是否认为可以在重定向响应后立即刷新更新面板(例如下载)?

我试过了:

  • 隐形按钮 - >作为一个 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 :(得分:0)

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>

答案 1 :(得分:0)

我遇到了类似的问题并使用hidden IFRAME trick解决了这个问题。不需要隐形按钮。事实上,我的版本甚至不需要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)
}