JS调用水晶报表打印翻页按钮事件

默认的水晶报表打印按钮、翻页按钮太小,并且样式不好调整,考虑自己做一个按钮,然后调用水晶报表的按钮事件。

在实际操作中发现可以在.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="上一页" onclick="return doReportButon('prevPg');" />
    <input id="Button3" type="button" value="下一页" onclick="return doReportButon('nextPg');" />
    <input id="Button5" type="button" value=" 打印 " onclick="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。在调用按钮事件时必须水晶报表允许产生该按钮,在界面上隐藏它。否则水晶报表不会产出该按钮,并且找不到该按钮的事件。

原文地址:https://www.cnblogs.com/coolsundy/p/4878271.html