我有一个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条记录),如果这会影响性能,我会感到困惑。 ..
有人可以建议我如何打印所有数据?
感谢。
答案 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();
}