2011-05-05 4 views
2

크리스탈 리포트 뷰어 (버전 13.0.2000.0)를 사용하는 ASP.NET 응용 프로그램에서 사용자가 "인쇄"를 클릭 한 다음 인쇄를 취소하거나 인쇄를 취소하면 다음 드릴 보고서 아래쪽에 크리스탈 대화 상자 "문서가 처리되는 동안 기다려주십시오."가 회전하면서 삼각형 원 애니메이션이 영원히 멈 춥니 다.인쇄 후 드릴 다운시 크리스탈 리포트가 멈춤

IE 및 Firefox에서는이 작업을 수행하지만 Chrome에서는이 작업을 수행하지 않습니다. 대신 인쇄 버튼을 사용하여 "인쇄하려면 PDF로 내보내기가 필요합니다."라는 내용의 PDF 내보내기가 실행됩니다. 메시지. 이것은 오래된 버전의 크리스탈이었습니다.

지금 당장 IE와 Firefox가 크롬과 동일한 작업을 수행하게 될 것입니다. 그러나 인쇄 문제에 대한 실질적인 해결책이 있다면 차라리 사용하고 싶습니다. 사용자가 인쇄 (대 수출)를 클릭하여 인쇄 할 때 (대 수출)를 클릭하는 것처럼 보입니다.

+0

다음 또는 이전 페이지 단추를 클릭하면 멈 춥니 다. 나는 또한이 문제에 대한 해결책이 필요하다. – JMS10

답변

0

이 문제를 해결하기 위해 나왔습니다. Crystal Reports에서는 버튼을 무시할 수 없기 때문에 인쇄 버튼을 숨기고 JavaScript/jQuery를 사용하여 직접 인쇄 버튼을 추가했습니다.

다음은 인쇄 작동 방식에 대한 정보입니다. 인쇄 버튼을 누르면 뷰 상태 및 이벤트 인수가있는 포스트 백이 수행됩니다. 포스트 백은 브라우저가 인라인으로 열리는 PDF 파일을 반환합니다. PDF 파일은 파일이 열릴 때 실행되는 인쇄 명령과 함께 내장되어 있습니다.

그래서 우리가 할 수있는 것은 숨겨진 IFRAME을 사용하여 인쇄 가능한 PDF를로드하는 것입니다. 이렇게하면 기본 페이지가 영향을받지 않습니다. 나는 PDF 로딩 인라인이 페이지/브라우저가 그 상태를 손상시키는 원인이라고 생각한다.

아래 코드를 ASPX 페이지 상단에 배치하십시오. 페이지 상단에 배치해야합니다. 그렇지 않으면 맨 아래에 인쇄 대화 상자가 표시됩니다.

<iframe id="HiddenFrame" name="HiddenFrame" style="display: none;"></iframe> 
<form id="PrintForm" action="MyPage.aspx" method="post" target="HiddenFrame"> 
    <!-- Change the name if your object is not named 'CrystalReportViewer1' --> 
    <input type="hidden" name="__CRYSTALSTATECrystalReportViewer1" id="CRState" /> 
    <input type="hidden" name="__VIEWSTATE" id="VState" /> 
    <!-- Change this value to match your CrystalReportViewer object's name. --> 
    <input type="hidden" name="__EVENTTARGET" value="CrystalReportViewer1" /> 
    <!-- This is the print command that is sent. --> 
    <input type="hidden" name="__EVENTARGUMENT" value='{"text":"PDF", "range":"false", "tb":"crpdfprint"}' /> 
</form> 

전술 한 바와 같이, IFRAME 우리의 PDF를로드 : 여기

는 HTML입니다. 이 폼은 뷰 상태 및 이벤트 인수를 사용하여 서버에 POST를 수행하는 데 사용됩니다. target 특성은 IFRAME에로드 할 양식을 알려줍니다. 메인 페이지에서

// Hide the print button. 
$('#CrystalReportViewer1_toptoolbar_print').hide(); 
// Inject our own print button. You can apply the same icon to your print button using CSS to make it look like the original icon. 
$('#CrystalReportViewer1_toptoolbar_print').parent().append('<div id="PrintButtonOverride"></div>'); 

// When user clicks our print button, copy the states and submit the form. 
$('#PrintButtonOverride').click(function() { 
    $('#CRState').val($('#__CRYSTALSTATECrystalReportViewer1').val()); 
    $('#VState').val($('#__VIEWSTATE').val()); 
    $('#PrintForm').submit(); 
}); 

클릭 이벤트 복사 개의보기 주와 다음 양식을 제출 : 여기

는 자바 스크립트입니다. 나는이 포스트를 빨리 써서 내가 불분명 한 것을 남겨두면 사과한다.

관련 문제