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

zhoukeke43 2007-06-18 04: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


}
}
...全文
289 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
daisylh 2007-06-21
  • 打赏
  • 举报
回复
先停止你的緩存機制,看列印是否正常

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧