CrystalReport的打印问题(asp.net)

funo 2009-08-10 02:37:16
CrystalReport的打印问题
谁能说的具体一点
困扰我好久了
好像我要装好多东西,还有html页面什么的看不懂,谁帮帮忙啊
...全文
553 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
funo 2009-08-12
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{

if (Session["myRpt"]!=null)
{
CrystalReportViewer1.ReportSource = (ReportDocument)Session["myRpt"];
}
}

protected void Button1_Click(object sender, EventArgs e)
{
//邦定报表到CrystalReportViewer
string rptPath = Server.MapPath(@"../Manage/CrystalReport.rpt");
ReportDocument myReport = new ReportDocument();
myReport.Load(rptPath);

CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;

((TextObject)myReport.ReportDefinition.ReportObjects["Text26"]).Text = "文件名称";

//保存到Session
Session["myRpt"] = myReport;

}

用Session 也不行啊,点击一次按钮保存session,再点击一次按钮读取session显示
冰糖_adam 2009-08-12
  • 打赏
  • 举报
回复
up
funo 2009-08-12
  • 打赏
  • 举报
回复
因该怎么写啊 急死我了
funo 2009-08-12
  • 打赏
  • 举报
回复
只是操作一个文档框 然后打印
funo 2009-08-12
  • 打赏
  • 举报
回复
只是操作文档框啊 泰哥说setdatasource之类的代码段都可以不要的吗
llsen 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 ookokk 的回复:]
经过大家指点现在代码改成这样了简单了了些,还是不能打印(没有数据)
string rptPath = Server.MapPath(@"../report/CReport.rpt");
CrystalReportSource1.ReportDocument.Load(rptPath);
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
TextObject title = (TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_lwdw"];
                    title.Text = "来文单位";

---------------------------------改成这样 没有数据
string rptPath = Server.MapPath(@"../report/CReport.rpt");
ReportDocument myReport = new ReportDocument();
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
myReport.Load(rptPath);
TextObject title = (TextObject)myReport.ReportDefinition.ReportObjects["Text_lwdw"];
                    title.Text = "来文单位";
[/Quote]

又没指定数据源,何来数据
funo 2009-08-12
  • 打赏
  • 举报
回复
经过大家指点现在代码改成这样了简单了了些,还是不能打印(没有数据)
string rptPath = Server.MapPath(@"../report/CReport.rpt");
CrystalReportSource1.ReportDocument.Load(rptPath);
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
TextObject title = (TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_lwdw"];
title.Text = "来文单位";

---------------------------------改成这样 没有数据
string rptPath = Server.MapPath(@"../report/CReport.rpt");
ReportDocument myReport = new ReportDocument();
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
myReport.Load(rptPath);
TextObject title = (TextObject)myReport.ReportDefinition.ReportObjects["Text_lwdw"];
title.Text = "来文单位";
funo 2009-08-12
  • 打赏
  • 举报
回复
显示详细信息的时候赋值 然后打印
funo 2009-08-11
  • 打赏
  • 举报
回复
知道了 好像报表位置不对
makun0624 2009-08-11
  • 打赏
  • 举报
回复
学习` UP
funo 2009-08-11
  • 打赏
  • 举报
回复
我新建一个dataset ,再建一报表 ,数据库专家里怎么读不到dataset里字段啊 不知道哪一部操作错了 有时能看到(谢谢了各位高手,急啊)
llsen 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 ookokk 的回复:]
点击打印 被刷掉了
[/Quote]

load里面代码那?
funo 2009-08-11
  • 打赏
  • 举报
回复
点击打印 被刷掉了
阿泰 2009-08-11
  • 打赏
  • 举报
回复
如果你只需要操作文本框,那么前面的 setdatasource之类的代码段都可以不要的。

打印不出的问题,看下这个文章里的第2点
http://topic.csdn.net/u/20090713/18/6e14bf28-1979-4ade-9c60-aaf09284553d.html
funo 2009-08-11
  • 打赏
  • 举报
回复
protected void Button1_Click(object sender, EventArgs e)
{
masterData = bll.Select(typeof(OdcReceivedData));
if ((masterData.Tables[0].Rows.Count) > 0 && (decimal.Parse(HiddenField1.Value) > 0))
{
CrystalReportViewer1.Visible = true;
DataTable dt = masterData.Tables[0];

//邦定报表到CrystalReportViewer
string rptPath = Server.MapPath(@"../report/CReport.rpt");
CrystalReportSource1.ReportDocument.Load(rptPath);

CrystalReportSource1.ReportDocument.SetDataSource(dt);
CrystalReportSource1.DataBind();

CrystalReportViewer1.ReportSource = CrystalReportSource1;
CrystalReportViewer1.DataBind();

// then print, this is the important thing here
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
CrystalReportSource1.ReportDocument.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.DefaultPaperSize;
CrystalReportSource1.ReportDocument.PrintOptions.PaperSource = CrystalDecisions.Shared.PaperSource.Auto;

PageMargins margins;

margins = CrystalReportSource1.ReportDocument.PrintOptions.PageMargins;
margins.bottomMargin = 350;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 350;
CrystalReportSource1.ReportDocument.PrintOptions.ApplyPageMargins(margins);

DataView dv = new DataView(masterData.Tables[0]);
dv.RowFilter = this.idField + " = " + HiddenField1.Value;
if (dv.Count > 0)
{
DataRow dr = dv[0].Row;
//来文单位
BaseData uintData = new OdcSendUnitData();
ParamCollection pc = new ParamCollection();
pc.Clause = OdcSendUnitData.ODC_SEND_UNIT_TABLE + "." + OdcSendUnitData.UNIT_NAME_FIELD + " = '" + dr[OdcReceivedData.FROM_ORGAN_FIELD] + "'";
uintData = bll.Select(pc, typeof(OdcSendUnitData));
if (uintData.Tables[0].Rows.Count > 0)
{
TextObject title = (TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_lwdw"];
title.Text = uintData.Tables[0].Rows[0][OdcSendUnitData.UNIT_NAME_FIELD].ToString();
}
((TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_lwdw"]).Text= dr["FILE_NO1"].ToString();//来文文号
((TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_wh"]).Text = dr[OdcReceivedData.FILE_NO_FIELD].ToString();//文号
((TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_fs"]).Text = dr["COPY_NUMBER"].ToString();//份数
((TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_nian"]).Text = Convert.ToDateTime(dr["SEND_DATE"]).Year.ToString(); //年
((TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_yue"]).Text = Convert.ToDateTime(dr["SEND_DATE"]).Month.ToString();//月
((TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_ri"]).Text = Convert.ToDateTime(dr["SEND_DATE"]).Day.ToString();//日
((TextObject)CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["Text_wjmc"]).Text = dr["FILE_TITLE"].ToString(); ;//文件名称
}
}
else
{
MessageHelper.Show(this, "没有数据");
}

}
现在加在按钮里还是不行
funo 2009-08-11
  • 打赏
  • 举报
回复
我这只是从数据库检索一些值贴上去 前面赋值好像也不需要把(结构)
funo 2009-08-11
  • 打赏
  • 举报
回复
没什么用
maseterdata是个数据集只有一张表 里面 是一个数据库表的全部数据
阿泰 2009-08-11
  • 打赏
  • 举报
回复
是不是代码放的位置不对,打印动作时,前面操作的值都丢失了。
把整个页面的代码全贴出来,特别是这个代码位于哪个过程里。

另外,你用ActiveX打印的话
CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX;
CrystalReportSource1.ReportDocument.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.DefaultPaperSize;
CrystalReportSource1.ReportDocument.PrintOptions.PaperSource = CrystalDecisions.Shared.PaperSource.Auto;

PageMargins margins;

margins = CrystalReportSource1.ReportDocument.PrintOptions.PageMargins;
margins.bottomMargin = 350;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 350;
CrystalReportSource1.ReportDocument.PrintOptions.ApplyPageMargins(margins);

这个代码段有用吗?
funo 2009-08-11
  • 打赏
  • 举报
回复
就是从数据库中取几个填进去,郁闷哦
funo 2009-08-11
  • 打赏
  • 举报
回复
是不是不都放在“详细资料”里面,
放在“报表页眉”里面
详细资料不能放固定的值???
加载更多回复(10)

4,818

社区成员

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

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