报表中遇到的问题(三)

来源:互联网 发布:贺炜解说 知乎 编辑:程序博客网 时间:2024/04/29 20:51

9.因为将报表本身自带的工具栏去掉.所以没有打印导出按钮.

需求方需要加打印按钮.然后就加上了.

开始代码时这样写的:

<SCRIPT language=javascript>
function PrintNoHdr()
{
t = new ActiveXObject("WScript.Shell");
t.RegWrite("HKCU//Software//Microsoft//InternetExplorer//PageSetup//header","");
t.RegWrite("HKCU//Software//Microsoft//InternetExplorer//PageSetup//footer","");
window.print()
}
</SCRIPT>

<asp:Button ID="Button2" runat="server" Text="打印" OnClick="print()"/>&nbsp;&nbsp;

后来总是提示错误,找了坤哥之后,才发现onclick不对,应该换成onClientClick.

<SCRIPT language=javascript>
function PrintNoHdr()
{
t = new ActiveXObject("WScript.Shell");
t.RegWrite("HKCU//Software//Microsoft//InternetExplorer//PageSetup//header","");
t.RegWrite("HKCU//Software//Microsoft//InternetExplorer//PageSetup//footer","");
window.print()
}
</SCRIPT>

<asp:Button ID="Button2" runat="server" Text="打印" OnClientClick="print()"/>&nbsp;&nbsp;

开始以为成功了,因为可以打印了.但是后来发现,一旦点击"打印"按钮,页面就会重新刷新,打印出来的数据就是错误的.

 

自己就开始改,改了半天,也没有发现错误,但是打印出来的数据就是不对.

后来将代码改为:

<SCRIPT language=javascript>
function PrintNoHdr()
{
t = new ActiveXObject("WScript.Shell");
t.RegWrite("HKCU//Software//Microsoft//InternetExplorer//PageSetup//header","");
t.RegWrite("HKCU//Software//Microsoft//InternetExplorer//PageSetup//footer","");
window.print()
}
</SCRIPT>

 <input type ="button"  id="button3" value ="打印" onclick ="javascript:print();" />

呵呵,这次终于可以了,可以打印了,数据也成功了.

 

后来找原因,原来:点击"打印"按钮,页面重新刷新,crystalReportView就没有被绑定到数据,所以报表就会默认的将数据源的表中的所有数据都显示出来.

 

 

总结:

1.关于onClick和onClientClick这两个事件,没有分清,从大的方向来说,就是还没有分清客户端和服务器.

2.后来"打印"按钮,又由<asp:Button/>改为<input/>.属于asp和html的区别,关于这一点,马上查.