我在页面上有一个按钮,用于创建页面的PDF。我想隐藏pdf的按钮,然后在创建pdf后显示它。我在代码隐藏中尝试了以下操作,它没有隐藏按钮。
Private Sub PdfPageButton_ServerClick(sender As Object, e As System.EventArgs) Handles PdfPageButton.ServerClick
PdfPageButton.Visible = False
ConvertURLToPDF()
PdfPageButton.Visible = True
End Sub
Private Sub ConvertURLToPDF()
Dim urlToConvert As String = HttpContext.Current.Request.Url.AbsoluteUri
'more code here not displayed...
' Performs the conversion and get the pdf document bytes that you can further
' save to a file or send as a browser response
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromUrl(urlToConvert)
' send the PDF document as a response to the browser for download
Dim Response As System.Web.HttpResponse = System.Web.HttpContext.Current.Response
Response.Clear()
Response.AddHeader("Content-Type", "binary/octet-stream")
Response.AddHeader("Content-Disposition", "attachment; filename=ConversionResult.pdf; size=" & pdfBytes.Length.ToString())
Response.Flush()
Response.BinaryWrite(pdfBytes)
Response.Flush()
Response.End()
End Sub
但是我在css中使用[@media print]不显示我的打印按钮。坏了它不会以其他方式起作用
答案 0 :(得分:1)
如果要在网络浏览器中隐藏按钮,则必须使用javascript。 VBA是像php这样的服务器端语言。你需要做一个ajax调用来制作pdf。 当用户点击按钮时,用javascript触发动作,隐藏按钮,向服务器发送请求,等待回答,然后再次显示按钮。
答案 1 :(得分:1)
单击按钮时,这将隐藏客户端上的按钮。然后,当您的页面呈现响应时,应该再次显示该按钮。
<asp:Button ID="PdfPageButton" OnClientClick="document.getElementById('PdfPageButton').style.display = 'none';" />
答案 2 :(得分:1)
它不隐藏按钮的原因是因为页面在此行之前没有再次呈现:
PdfPageButton.Visible = True
如果它是WinForms,你的方法可行,但在网络上你需要做的有点不同。
您只需在按钮的display:none
事件中设置onclick()
的CSS样式即可隐藏按钮:
<input type="button" id="pdfBtn" onclick="this.style.display = 'none';" />
但要在生成PDF时再次显示它,您需要完整地刷新页面(即回发),或者如果您想使用AJAX,则可以连接事件监听器。
编辑:鉴于PDF是页面本身的额外信息,您是否可以在URL中添加查询字符串参数,例如
mysite/mypage.aspx?isPDF=1
然后,在PageLoad()
中添加:
if(Request.QueryString["isPDF"] == "1")
{
PdfButton.Visible == false;
}
以便在isPDF
设置为“1”(或您选择的任何内容)时按钮不存在。
然后,将带有额外参数的 URL传递给ConvertURLToPDF()
方法?
答案 3 :(得分:0)
隐藏它,然后显示它,但它不会显示给客户端,因为在将页面呈现给用户之前,所有这些都发生在代码隐藏中。
最好的办法是添加一些客户端脚本,以便在点击按钮时隐藏按钮。重新生成页面时,按钮将再次出现,对他们可见。