您的位置:程序门 -> .net技术 -> 图表区



水晶报表,推模式下,打印出现,通讯错误,打印将停止.拉模式没有问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


水晶报表,推模式下,打印出现,通讯错误,打印将停止.拉模式没有问题
发表于:2007-06-18 16:43:09 楼主
为提高性能.我写了一个缓存机制.第一次查看报表,查询的数据.我缓存了下来.第二次,如果缓存里有,就不查.直接取.现在分页,导出都没有问题.但打印有问题.不知道打印是怎么做.
查询数据应没有问题,分页,导出都可以.
代码如下
using   system;
using   system.collections;
using   system.componentmodel;
using   system.data;
using   system.drawing;
using   system.web;
using   system.web.sessionstate;
using   system.web.ui;
using   system.web.ui.webcontrols;
using   system.web.ui.htmlcontrols;

using   crystaldecisions.crystalreports.engine;
using   crystaldecisions.shared;
using   system.collections.specialized;
using   system.configuration;

namespace   reporttest2003
{
///   <summary>
///   webform1   的摘要说明。
///   </summary>
public   class   webform2   :   system.web.ui.page
{
protected   crystaldecisions.web.crystalreportviewer   crystalreportviewer1;
//reportdocument   reportdoc;

private   void   page_load(object   sender,   system.eventargs   e)
{
//   在此处放置用户代码以初始化页面
//this.loadrpt();

}

private   void   loadrpt()
{
//

// parameterfields   paramfields   =   new   parameterfields   ();
// parameterfield   paramfield;
// parameterdiscretevalue   discreteval;
//
// namevaluecollection   coll=request.querystring;  
// string[]   arr1   =   coll.allkeys;  
// string   skey= " ";
// string   svalue= " ";
//
// for   (int   i   =   1;   i   <   arr1.length;   i++)  
// {
// skey=arr1[i];
// svalue=coll[i];
// paramfield=new   parameterfield();
// paramfield.name= "@ "+skey;
// discreteval=new   parameterdiscretevalue();
// discreteval.value=svalue;
// paramfield.currentvalues.add(discreteval);
// paramfields.add   (paramfield);
// }
//
// crystalreportviewer1.parameterfieldinfo   =   paramfields;
//
// string   rptfile=coll[0];
// reportdocument   reportdoc;
// reportdoc     =   new     reportdocument();
// reportdoc.load(server.mappath(@ "reportfile\ "+rptfile));
//
//
// string   sservername=configurationsettings.appsettings[ "crystalreportconnectservername "];
// string   sdatabasename=configurationsettings.appsettings[ "crystalreportconnectdatabasename "];
// string   suserid=configurationsettings.appsettings[ "crystalreportconnectuserid "];
// string   spassword=configurationsettings.appsettings[ "crystalreportconnectpassword "];
//
//
// tablelogoninfo     logoninfo   ;
// foreach(   crystaldecisions.crystalreports.engine.table   tb   in   reportdoc.database.tables)
// {
// logoninfo   =   tb.logoninfo;
// logoninfo.connectioninfo.servername   =   sservername;
// logoninfo.connectioninfo.databasename   =   sdatabasename;
// logoninfo.connectioninfo.userid   =   suserid;
// logoninfo.connectioninfo.password   =   spassword;
// tb.applylogoninfo(logoninfo);
//
// }
// crystalreportviewer1.reportsource   =   reportdoc;


namevaluecollection   parameters=request.querystring;
string   rptfile=parameters[0];
namevaluecollection   parameters1=new   namevaluecollection();
for(int   i=1;i <parameters.count;i++)
{
parameters1.add(parameters.allkeys[i],parameters[i]);//localhost/reporttest2003/reportfile/testpage.rpt[i]);
}

reportdocument   reportdoc     =   new     reportdocument();
reportdoc.load(server.mappath(@ "reportfile\ "+rptfile));

system.data.dataset   ds;
ds=facade.getdata(this.session.sessionid,rptfile,parameters1, "sp_syswin_ "+rptfile.substring(0,rptfile.indexof( ". ")));
reportdoc.setdatasource(ds.tables[0]);
crystalreportviewer1.reportsource   =   reportdoc;
//this.crystalreportviewer1.databind();

}
#region   web   窗体设计器生成的代码
override   protected   void   oninit(eventargs   e)
{
//
//   codegen:   该调用是   asp.net   web   窗体设计器所必需的。
//
initializecomponent();
base.oninit(e);
this.loadrpt();
}

///   <summary>
///   设计器支持所需的方法   -   不要使用代码编辑器修改
///   此方法的内容。
///   </summary>
private   void   initializecomponent()
{        
this.load   +=   new   system.eventhandler(this.page_load);

}
#endregion


}
}
发表于:2007-06-21 08:44:441楼 得分:0
先停止你的緩存機制,看列印是否正常


快速检索

最新资讯
热门点击