如何打印分页gridview数据

时间:2010-03-26 13:15:48

标签: gridview printing

我有一个HTML按钮,点击按钮后我调用以下javascript函数,传递我的gridview所在的div id。

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条记录我正在对结果进行分页。所以当我使用上面的代码进行打印时,我只能看到第1页的记录被打印出来。所以为了打印所有记录我考虑在页面上放置2个网格视图(一个使用Allowpaging ='true',另一个使用'false'),我将相同的数据源绑定到它们两个。使用Allowpaging ='false'的gridview设置为'display :没有' 在页面加载和上面的CallPrint()方法中,我想将此gridview的显示设置为'block'而另一个设置为'none'。但它似乎没有正常工作,因为用户将看到所有记录浏览器不仅仅是在印刷文档中。

我还想过使用一个会话来存储我的gridview并将其打印在另一个页面中,如here所述。由于我的数据很大(约3000条记录),如果这会影响性能,我会感到困惑。 ..

有人可以建议我如何打印所有数据?

感谢。

2 个答案:

答案 0 :(得分:0)

我使用其他页面方法而不是2个网格视图。对于每个人来说,好处是较小的视图状态,只有点击打印的人才会看到3k记录的任何性能影响,说实话3k应该渲染得非常快。另一个选择是iframe第二个gridview,并使用一些jquery来打印iframe,我以前使用过这个库 - > http://projects.erikzaadi.com/jQueryPlugins/jQuery.printElement/

答案 1 :(得分: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();
        }