通用水晶報(bào)表模板創(chuàng)建實(shí)例_第1頁
通用水晶報(bào)表模板創(chuàng)建實(shí)例_第2頁
通用水晶報(bào)表模板創(chuàng)建實(shí)例_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

通用水晶報(bào)表模板創(chuàng)建實(shí)例背景目的當(dāng)有一大批報(bào)表需要你通過水晶報(bào)表來實(shí)現(xiàn)其打印、導(dǎo)出功能時,你不得不為這些具有相似結(jié)構(gòu)的報(bào)表創(chuàng)建一一對應(yīng)模板(rpt文件)而感到煩惱,其實(shí),對于每一個編程人員來說,內(nèi)心早就有一種想法:能不能通過一個通用的報(bào)表模板來實(shí)現(xiàn)這些報(bào)表所需要的功能呢?下面就從這個念頭入手,解決這個煩人的問題。方法思路仔細(xì)研究一下水晶報(bào)表模板rpt的文件結(jié)構(gòu),主要有以下四個方面:一、數(shù)據(jù)源設(shè)置二、數(shù)據(jù)字段綁定三、特殊字段應(yīng)用四、文本對象設(shè)置數(shù)據(jù)源的設(shè)置需要通過綁定一個DataSet文件,對于不同的報(bào)表,具有不同的報(bào)表數(shù)據(jù)結(jié)構(gòu),所以問題的關(guān)鍵所在就是要統(tǒng)一一個具有相同結(jié)構(gòu)的DataSet文件,把它作為水晶報(bào)表的唯一數(shù)據(jù)源。在具有一個統(tǒng)一的數(shù)據(jù)源結(jié)構(gòu)之后,我們需要做到的主要有兩點(diǎn):一、控制報(bào)表數(shù)據(jù)傳入報(bào)表的時候我們可以將傳入的DataSet數(shù)據(jù)集的表結(jié)構(gòu)都轉(zhuǎn)換成跟DataSet文件一樣的結(jié)構(gòu)(比如表名、字段名和字段數(shù)的轉(zhuǎn)換);二、在水晶報(bào)表模板中用未綁定字段和文本對報(bào)表結(jié)構(gòu)進(jìn)行構(gòu)造。創(chuàng)建步驟通過上面的思路分析,我們大致已經(jīng)知道了實(shí)現(xiàn)統(tǒng)一報(bào)表模板所需要做事項(xiàng),下面進(jìn)行具體操作:一、準(zhǔn)備工作我們都知道,做每件事情必定是有得有失的,主要是得要多與失,并達(dá)到我們的理想目標(biāo),在統(tǒng)一報(bào)表模板的時候,我們必定會失去了每個報(bào)表的靈活顯示特點(diǎn),所以一開始,我們就要為這個統(tǒng)一的報(bào)表模板設(shè)定一個最大的字段數(shù)和實(shí)際顯示數(shù),這些都必須進(jìn)行固定化,在這里,我們可以設(shè)置最大字段數(shù)MaxColumnNum=15,實(shí)際顯示數(shù)為ShowColumnNum=11。注:最大字段數(shù)大于實(shí)際顯示數(shù)是為了以后的報(bào)表擴(kuò)充升級做準(zhǔn)備的。二、創(chuàng)建數(shù)據(jù)集文件(rptDataSet.xsd)創(chuàng)建表名為Tablel表,有15個字段(與上面的最大字段數(shù)對應(yīng)),字段名為rptFieldl、rptField2、rptField3rptField15,全部字段的類型都設(shè)置為string。三、創(chuàng)建水晶報(bào)表模板文件(rptModel.rpt)在創(chuàng)建的水晶報(bào)表模板里面設(shè)置報(bào)表的數(shù)據(jù)源為rptDataSet里面的Table1。在頁眉先插入一個大的文本對象,命名為rptTitle,作用是顯示報(bào)表標(biāo)題,然后在其下面插入11個文本對象,分別命名為rtpTitleStr1、rtpTitleStr2、rtpTitleStr3rtpTitleStr11,作用是顯示報(bào)表列標(biāo)題。在詳細(xì)資料里面插入11個未綁定字段,分別命名為UnboundString1、UnboundString2、UnboundString3UnboundString11,作用是顯示報(bào)表數(shù)據(jù)。在UnboundString1上面右鍵,然后編輯公式如下:WhileReadingRecords;StringVarx1:={Table1.rptField1};其它未綁定字段可以參照這種格式綁定其它的表字段。四、創(chuàng)建報(bào)表顯示文件(rptView.aspx)在aspx文件中添加CrystalReportViewer控件CrystalReportViewer1。雙擊頁面打開對應(yīng)的rptView.aspx.cs程序文件,然后在添加一下代碼://實(shí)例化billsreportTest對象rptDocSDCenter.Report.billsreportTestrptDoc=newSDCenter.Report.billsreportTest();〃改變dsTmp(報(bào)表數(shù)據(jù)集)表結(jié)構(gòu)的字段名,已rptField+1(2、3....)的形式命名for(inti=0;i<dsTmp.Tables[0].Columns.Count;i++){dsTmp.Tables[0].Columns[i].ColumnName="rptField"+(i+1);}//以最大字段數(shù)15為上限,為dsTmp添加缺少的字段intColumnsAdd=15-Convert.ToInt32(dsTmp.Tables[0].Columns.Count);for(intk=0;k<ColumnsAdd;k++)dsTmp.Tables[0].Columns.Add("rptField"+(15-k));//rptDoc綁定數(shù)據(jù)源rptDoc.SetDataSource(dsTmp);//創(chuàng)建報(bào)表模板中的文本對象rptTitle,并對其進(jìn)行賦值TextObjectrptTitleText=rptDoc.ReportDefinition.ReportObjects["rptTitle"]asTextObject;rptTitleText.Text="報(bào)表標(biāo)題”;〃對報(bào)表模板格式進(jìn)行初始化定義stringrptTitleStr=Session["rptTitleStr"].ToString();string[]rptTitleArray=rptTitleStr.Split(',');stringrptShowTitleTmp=Session["rptShowTitle"].ToString();intj=0;for(inti=0;i<rptShowTitleTmp.Length;i++){if(Convert.ToInt32(rptShowTitleTmp.Substring(i,1))>0)j+=1;}if(j==0)j=1;intrptWidth=16410,rptLeftBegin=120;intColumnsShow=j;intColumnsNoShow=11-j;intColumnsWidth=Convert.ToInt32(rptWidth/j);for(inth=0;h<11;h++){//在定義報(bào)表模板內(nèi)最大列為11的情況下,隱藏沒有關(guān)聯(lián)的列及其對應(yīng)列標(biāo)題if(Convert.ToInt32(rptShowTitleTmp.Substring(h,1))==0){TextObjectrtpTitleStrText=rptDoc.ReportDefinition.ReportObjects["rtpTitleStr"+(h+1)]asTextObject;rtpTitleStrText.ObjectFormat.EnableSuppress=true;FieldObjectrptDataStrText=rptDoc.ReportDefinition.ReportObjects["UnboundString"+(h+1)]asFieldObject;rptDataStrText.ObjectFormat.EnableSuppress=true;}else{//平均報(bào)表模板顯示列的寬度try{TextObjectrtpTitleStrText=rptDoc.ReportDefinition.ReportObjects["rtpTitleStr"+(h+1)]asTextObject;rtpTitleStrText.Width=ColumnsWidth;rtpTitleStrText.Left=rptLeftBegin;rtpTitleStrText.Text=rptTitleArray[h];FieldObjectrptDataStrText=rptDoc.ReportDefinition.ReportObjects["UnboundString"+(h+1)]asFieldObject;rptDataStrText.Width=ColumnsWidth;rptDataStrText.Left=rptLeftBegin;rptLeftBegin+=ColumnsWidth;}catch(Syste

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論