流程:
asp:LinkButton
(下载)和asp:Button
(下一个)。 需要: 启用“下一步”
问题:
如果已启用,我可以使用“next”转到新页面,但我希望在下载完成之前禁用它。
一些相关代码:
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的想法持开放态度。
答案 0 :(得分:0)
如果已启用,我可以使用“next”进入新页面,但我希望在下载完成之前将其禁用
对不起,这根本不可能。除非您编写自己的下载处理程序机制,否则无法监视下载进度并在完成后执行操作。浏览器不会将下载进度暴露给可以通过页面上的脚本访问的任何内容。
答案 1 :(得分:0)
我找到了一个可以很好地解决问题的解决方案!
这是按钮
<asp:Button
ID="btnNext"
runat="server"
Text="Next"
ClientIDmode = "Static"
CssClass=""
Enabled="false"
PostBackURL="[nextpage]"/>
以下是链接
<asp:LinkButton id="btnEnvelope" ClientIDMode="Static" runat="server" Text="Print your envelope" ToolTip="Click to Open Print Dialog" />
<asp:LinkButton id="btnEnvelopeTemplate" ClientIDMode="Static" runat="server" Text="Print this template" ToolTip="Click to Open Print Dialog" />
以下是iframe
<iframe id="frameEnvelope" class="pdfIframe" src="Documents/Envelope.aspx"></iframe>
<iframe id="frameEnvelopeTemplate" class="pdfIframe" src="Documents/EnvelopeTemplate.aspx"></iframe>
这是Css
.pdfIframe
{
display: none;
}
以下是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");
});
});