单击Asp.Net后隐藏/显示按钮

时间:2011-10-07 14:26:13

标签: asp.net web-applications

我在页面上有一个按钮,用于创建页面的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]不显示我的打印按钮。坏了它不会以其他方式起作用

4 个答案:

答案 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)

隐藏它,然后显示它,但它不会显示给客户端,因为在将页面呈现给用户之前,所有这些都发生在代码隐藏中。

最好的办法是添加一些客户端脚本,以便在点击按钮时隐藏按钮。重新生成页面时,按钮将再次出现,对他们可见。