asp.net水晶报表打印实例代码
//试两 种打印 报 表 的功能。我在form1上放置了一个crystalreportviewer控件,命名为cryview,准 备使用它自带的"打印按钮"来打印报表。
//还放 置了一个crystalreportdocument,命名为cryreport1,另外还在form1上放置了一个命为"开 始打印"的按 钮,准 备用它来直接调用报表打印。
//在form1的load里对cryview和cryreport1以及reportds进行了初始 化。
private void form1_load(object sender, eventargs e)
{
//先要初始化reportds,人 为的向其中加入一些数据dtpack
datarow reprow1= reportds.tables["dtpack"].newrow();
reprow1["pname"] = "基本包";
reprow1["prates"] = 12;
reprow1["nummonth"] = 12;
reprow1["enddate"] = "2011-6-20";
reportds.tables["dtpack"].rows.add(reprow1);
datarow reprow2 = reportds.tables["dtpack"].newrow();
reprow2["pname"] = "经典影视";
reprow2["prates"] = 2;
reprow2["nummonth"] = 12;
reprow2["enddate"] = "2011-6-20";
reportds.tables["dtpack"].rows.add(reprow2);
//以上为临时加入表中的2个测试数据。
//下面再添加其它数据
cryreport1.load("dtvreport.rpt");
cryreport1.setdatasource(reportds.tables["dtpack"]);
//下面是直接对报表中的几个参数字段进行赋值
cryreport1.setparametervalue("tuseraddress", "用户的家庭住址");
cryreport1.setparametervalue("toperator", "孙丽");
cryreport1.setparametervalue("tusername", "缴费人名称");
cryview.reportsource = cryreport1;
}
private void button1_click(object sender, eventargs e)
{
system.drawing.printing.printdocument pdoc = new printdocument();
int rawkind = 1;
for (int i = 0; i <= pdoc.printersettings.papersizes.count - 1; i++)
{
if (pdoc.printersettings.papersizes[i].papername == "reppage")
{ //在这里,我使用了自定义的纸张名称reppage
rawkind = pdoc.printersettings.papersizes[i].rawkind;
}
}
reportdocument mydoc = new reportdocument();
mydoc.printoptions.papersize=(crystaldecisions.shared.papersize)rawkind;
pagemargins pmargin=new pagemargins();
pmargin.topmargin = 100;
pmargin.bottommargin = 100;
pmargin.leftmargin =10;
pmargin.rightmargin =10;
mydoc.printoptions.applypagemargins(pmargin);
//定义了一下边界,其它我在报表里已经自定义了边界,可是这个左右边 界的值在打印时好像不起作用,在打印出来的发票左边的空余空间很大,估计至少有一1厘米。上下边界倒是起了作用。
//下面再添加其它数据
string fn = "dtvreport.rpt";
//string fn=application.startuppath+"dtvreport.rpt";
mydoc.load(fn);
mydoc.setdatasource(reportds.tables["dtpack"]);
mydoc.setparametervalue("tuseraddress", "用户的家庭住址");
mydoc.setparametervalue("toperator", "孙丽www.111com.net");
mydoc.setparametervalue("tusername", "缴费人名称");
mydoc.printtoprinter(1,false,0,0); //开始打印所有页
}