2010-03-26 55 views
1

我有一個HTML按鈕,點擊按鈕後,我打電話給下面的JavaScript函數,傳遞我的gridview存在的div id。如何打印分頁gridview數據

function CallPrint(strid) 

{ 
var prtContent = document.getElementById(strid); 

var WinPrint = window.open('', '', 'left=0,top=0,width=900,height=600,toolbar=1,scrollbars=1,status=0'); 

WinPrint.document.write(prtContent.innerHTML); 

WinPrint.document.close(); 

WinPrint.focus(); 

WinPrint.print(); 

WinPrint.close(); 


} 

B'coz我的GridView有大約3000條記錄,我的分頁時results.So我用上面的代碼打印,我可以從第一頁看到的只是記錄越來越printed.so爲了打印所有的記錄,我想在網頁上放置2 gridview(一個Allowpaging ='真',另一個'假'),我綁定相同的數據源對他們兩個。使用Allowpaging ='假'的GridView是設置爲'display:none' 在頁面加載和上面的CallPrint()方法中,我想將此gridview的顯示設置爲'block',將另一個設置爲'none'。但它看起來並不能正常工作,因爲用戶將在瀏覽器中看到所有記錄,而不僅僅是在打印的文檔中。

我也想使用會話來存儲我的GridView和在另一頁打印提到here。至於我的數據是巨大的(大約3000條記錄)我很困惑,如果這會影響性能的...

有人可以請建議如何打印所有數據?

謝謝。

回答

0

我會使用其他頁面的方法,而不是有2 gridview。對於每個人來說,好處是視圖狀態較小,只有點擊打印的人才會看到3k記錄的任何性能影響,說實話,3k應該渲染速度非常快。另一種選擇是iframe的第二個gridview,並使用一些jquery來打印iframe,我過去曾使用這個庫 - >http://projects.erikzaadi.com/jQueryPlugins/jQuery.printElement/

0
function printItn() { 
     //you can put your contentID which is you want to print. 

     var printContent = document.getElementById('<%= pnlForm.ClientID %>'); 
     var windowUrl = 'about:blank'; 
     var uniqueName = new Date(); 
     var windowName = 'Print' + uniqueName.getTime(); 

     // you should add all css refrence for your Gridview. something like. 

     var WinPrint= window.open(windowUrl,windowName,'left=300,top=300,right=500,bottom=500,width=1000,height=500');WinPrint.document.write('<'+'html'+'><head><link href="cssreference" rel="stylesheet" type="text/css" /><link href="gridviewcssrefrence" rel="stylesheet" type="text/css" /></head><'+'body style="background:none !important"'+'>'); 

     WinPrint.document.write(printContent.innerHTML); 
     WinPrint.document.write('<'+'/body'+'><'+'/html'+'>'); 
     WinPrint.document.close(); 
     WinPrint.focus(); 
     WinPrint.print(); 
     WinPrint.close(); 
     }