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.111cn.net");
mydoc.setparametervalue("tusername", "繳費人名稱");
mydoc.printtoprinter(1,false,0,0); //開始列印所有頁
}