Jquery asp.net链接按钮下载pdf后刷新页面
过程:Jquery asp.net链接按钮下载pdf后刷新页面,jquery,asp.net,vb.net,Jquery,Asp.net,Vb.net,过程: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If SessionHelper.PrintedEnvelope Or SessionHelper.PrintedTemplate Then Me.btnNext.Enabled = True Me.btnNext.CssClass = "n
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If SessionHelper.PrintedEnvelope Or SessionHelper.PrintedTemplate Then
Me.btnNext.Enabled = True
Me.btnNext.CssClass = "nextButton"
Else
Me.btnNext.Enabled = False
End If
End Sub
Protected Sub btnEnvelopeTemplate_Click(sender As Object, e As EventArgs) Handles btnEnvelopeTemplate.Click
Try
SessionHelper.PrintedTemplate = True
Dim m As System.IO.MemoryStream = DeliveryHelper.generateEnvelope(True, "English")
Dim data As Byte() = m.ToArray
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/download"
Response.AppendHeader("Content-Length", data.Length.ToString())
Response.AppendHeader("Content-Disposition", "attachment; filename=" + "EnvelopeTemplate.pdf")
Response.AppendHeader("Accept-Ranges", "bytes")
Response.OutputStream.Write(data, 0, data.Length)
If Response.IsClientConnected Then
Response.Flush()
' Response.End()
End If
Catch ex As Exception
'stuff here
End Try
End Sub
asp:LinkButton
(下载)和一个asp:Button
(下一步)李>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If SessionHelper.PrintedEnvelope Or SessionHelper.PrintedTemplate Then
Me.btnNext.Enabled = True
Me.btnNext.CssClass = "nextButton"
Else
Me.btnNext.Enabled = False
End If
End Sub
Protected Sub btnEnvelopeTemplate_Click(sender As Object, e As EventArgs) Handles btnEnvelopeTemplate.Click
Try
SessionHelper.PrintedTemplate = True
Dim m As System.IO.MemoryStream = DeliveryHelper.generateEnvelope(True, "English")
Dim data As Byte() = m.ToArray
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/download"
Response.AppendHeader("Content-Length", data.Length.ToString())
Response.AppendHeader("Content-Disposition", "attachment; filename=" + "EnvelopeTemplate.pdf")
Response.AppendHeader("Accept-Ranges", "bytes")
Response.OutputStream.Write(data, 0, data.Length)
If Response.IsClientConnected Then
Response.Flush()
' Response.End()
End If
Catch ex As Exception
'stuff here
End Try
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If SessionHelper.PrintedEnvelope Or SessionHelper.PrintedTemplate Then
Me.btnNext.Enabled = True
Me.btnNext.CssClass = "nextButton"
Else
Me.btnNext.Enabled = False
End If
End Sub
Protected Sub btnEnvelopeTemplate_Click(sender As Object, e As EventArgs) Handles btnEnvelopeTemplate.Click
Try
SessionHelper.PrintedTemplate = True
Dim m As System.IO.MemoryStream = DeliveryHelper.generateEnvelope(True, "English")
Dim data As Byte() = m.ToArray
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/download"
Response.AppendHeader("Content-Length", data.Length.ToString())
Response.AppendHeader("Content-Disposition", "attachment; filename=" + "EnvelopeTemplate.pdf")
Response.AppendHeader("Accept-Ranges", "bytes")
Response.OutputStream.Write(data, 0, data.Length)
If Response.IsClientConnected Then
Response.Flush()
' Response.End()
End If
Catch ex As Exception
'stuff here
End Try
End Sub
我也对jquery的想法持开放态度
如果启用了“下一步”,我可以使用“下一步”进入新页面,但我希望在下载完成之前将其禁用
对不起,这根本不可能。除非您编写自己的下载处理程序机制,否则无法监控下载进度并在下载完成后采取行动。浏览器不会将下载进度公开给任何可以通过您页面上的脚本访问的内容。我找到了一个很好地解决问题的解决方案
<asp:Button
ID="btnNext"
runat="server"
Text="Next"
ClientIDmode = "Static"
CssClass=""
Enabled="false"
PostBackURL="[nextpage]"/>
这里是javascript
function printFrame(id) {
var frm = document.getElementById(id).contentWindow;
frm.focus(); // focus on contentWindow is needed on some ie versions
frm.print();
document.getElementById('btnNext').disabled = false;
return false;
}
$(document).ready(function () {
//....other stuff
$("#btnEnvelope").click(function () {
printFrame("frameEnvelope");
});
$("#btnEnvelopeTemplate").click(function () {
printFrame("frameEnvelopeTemplate");
});
});
看看这是否有帮助,它看起来是可以的,但我也找到了一个简单的解决办法。如果我在浏览器中打开pdf而不是强制下载,当他们点击后退按钮返回屏幕时,它会自动刷新页面。对于纯网络屏幕阅读器来说更简单、更好。但我会进一步研究这一点,看看如何才能以防万一。找到更好的。看我的答案。也许我不清楚。我的意思是,一旦这个人点击了下载链接。即使有错误。但是HttpHeader是为下载而编写的,以后不会再下载了。
function printFrame(id) {
var frm = document.getElementById(id).contentWindow;
frm.focus(); // focus on contentWindow is needed on some ie versions
frm.print();
document.getElementById('btnNext').disabled = false;
return false;
}
$(document).ready(function () {
//....other stuff
$("#btnEnvelope").click(function () {
printFrame("frameEnvelope");
});
$("#btnEnvelopeTemplate").click(function () {
printFrame("frameEnvelopeTemplate");
});
});