您是否认为可以在重定向响应后立即刷新更新面板(例如下载)?
我试过了:
隐形按钮 - >作为一个 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;}
答案 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)
}