默认的水晶报表打印按钮、翻页按钮太小,并且样式不好调整,考虑自己做一个按钮,然后调用水晶报表的按钮事件。
在实际操作中发现可以在.net按钮的服务器端事件中调用翻页方法;
CrystalReportViewer1.ShowPrevious(); //上一页
CrystalReportViewer1.ShowFirst(); //第一页
CrystalReportViewer1.ShowNext(); //下一页
CrystalReportViewer1.ShowLast(); //最后一页
然而没有发现打印方法。在CS的水晶报表中有打印方法,但是在BS中没有该方法。
CrystalReportViewer1.ShowPrint(); //CS端的打印功能。
找了很多资料都没有发现BS端打印方法。
最后想起用JS直接调用水晶报表的按钮事件。用Chrome追踪源码发现水晶报表的几个按钮ID是固定格式。
直接查找到该按钮然后调用click事件就可以实现该功能。
HTML代码
<div> <input id="Button2" type="button" value="上一页" οnclick="return doReportButon('prevPg');" /> <input id="Button3" type="button" value="下一页" οnclick="return doReportButon('nextPg');" /> <input id="Button5" type="button" value=" 打印 " οnclick="return doReportButon('print');" /> </div>
JS代码,
<script language="javascript" type="text/javascript"> //<![CDATA[ //js调用水晶报表按钮点击事件 function doReportButon(btnName) { var buttonName = "IconImg_CrystalReportViewer1_toptoolbar_" + btnName; var buttonPrint = document.getElementById(buttonName); buttonPrint.click(); return false; } $(function ($) { $("#CrystalReportViewer1_toptoolbar_print").hide(); $("#CrystalReportViewer1_toptoolbar_prevPg").hide(); $("#CrystalReportViewer1_toptoolbar_nextPg").hide(); $("#CrystalReportViewer1_toptoolbar_export").hide(); }); //]]> </script>
注意:水晶报表的按钮图标是由Table嵌套的,
因此图标的名称前缀有一个IconImg_CrystalReportViewer1_toptoolbar_ ,它所对应的Table的ID为前缀是:CrystalReportViewer1_toptoolbar。在调用按钮事件时必须水晶报表允许产生该按钮,在界面上隐藏它。否则水晶报表不会产出该按钮,并且找不到该按钮的事件。