2011-10-07 2 views
0

페이지의 PDF를 만드는 버튼이 있습니다. 나는 pdf를위한 단추를 숨기고 싶다 그 후에 pdf가 창조 된 후에 그것을 보여준다. 코드 비헤이비어에서 다음을 시도했지만 버튼을 숨기지 않습니다.Asp.Net을 클릭 한 후 버튼 숨기기/표시

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]를 사용하여 인쇄 버튼을 표시하지 않습니다. 나쁜 점은 다른 방식으로는 작동하지 않는다는 것입니다.

답변

1

는 버튼을 숨기지 않는 이유는 당신은 조금 다르게해야합니다.

당신은 단순히 버튼의 onclick() 이벤트에 display:none의 CSS 스타일을 설정하여 버튼을 숨길 수 :

<input type="button" id="pdfBtn" onclick="this.style.display = 'none';" /> 

하지만, PDF가 생성되었을 때 다시 보여, 당신은 새로 고침해야 할 것 중 하나 (예 : 포스트 백), AJAX를 사용하려면 이벤트 리스너를 연결할 수 있습니다.

편집 : PDF가 페이지 자체에 대한 추가 정보가 주어지면 URL에 쿼리 문자열 매개 변수를 추가 할 수 있습니까? 예 : 당신의 PageLoad()에서 다음

mysite/mypage.aspx?isPDF=1

, 추가 isPDF가 (당신이 무엇을 선택 또는) '1'로 설정되어있을 때

if(Request.QueryString["isPDF"] == "1") 
{ 
    PdfButton.Visible == false; 
} 

그래서 버튼이 존재하지 않습니다.

그런 다음 URL을 ConvertURLToPDF() 메서드의 추가 매개 변수로 전달하십시오.

+0

당신이 맞습니다, 그것은 버튼을 숨기지 만 그것은 여전히 ​​PDF에 나타났습니다. – TroyS

+0

아 맞습니다 - PDF는 현재 페이지의 PDF입니까? 우리는 생성되고 어떻게 알 필요가 것입니다,하지만 난 당신이 미디어 = "인쇄"가장 최고 일 – Widor

+0

귀하의 천재와 CSS를 사용하여 검색하는 것이 좋습니다. 나는 & "? IsPdf = 1"및 PageLoad 이벤트에 쿼리 문자열과 워싱턴 라이 일 HttpContext.Current.Request.Url.AbsoluteUri = 문자열이 ... 희미한 urlToConvert을 추가했다. 고맙습니다. – TroyS

0

페이지를 숨기고 나서 보여 주지만 페이지가 렌더링되기 전에 코드 숨김으로 모든 일이 일어나기 때문에 클라이언트에 표시되지 않습니다. 사용자.

가장 좋은 방법은 버튼을 클릭 할 때 버튼을 숨기기 위해 클라이언트 측 스크립트를 추가하는 것입니다. 페이지가 재생성되면 버튼이 다시 표시되어 볼 수 있습니다.

1

웹 브라우저에서 버튼을 숨기려면 javascript를 사용해야합니다. VBA는 PHP와 같은 서버 측 언어입니다. pdf를 만들려면 ajax 호출을해야합니다. 사용자가 버튼을 클릭하면 자바 스크립트로 동작을 트리거하고, 버튼을 숨기고, 서버에 요청을 보내고, 응답을 기다린 다음 버튼을 다시 표시합니다.

+0

다른 말로하면 javascript 함수에서 __doPostBack을 사용 하시겠습니까? – TroyS

+0

사용하는 자바 스크립트 프레임 워크를 기반으로합니다. 여기에 아약스 예제 http://www.codeproject.com/KB/ajax/AjaxASPdotNET.aspx – Guntis

1

버튼을 클릭하면 클라이언트 측의 버튼이 숨겨집니다. 그런 다음 페이지에서 응답을 렌더링 할 때 버튼이 다시 표시되어야합니다. 이 윈폼이라면

PdfPageButton.Visible = True 

, 당신의 접근 방식 일 것이다하지만 웹 : 페이지이 줄 앞에 다시 렌더링되지 않기 때문에

<asp:Button ID="PdfPageButton" OnClientClick="document.getElementById('PdfPageButton').style.display = 'none';" /> 
+0

@Bandon 답장을 보내 주셔서 감사합니다. 버튼에 마크 업을 추가했지만 불행히도 버튼을 숨기지 않았습니다. – TroyS

관련 문제