轉(zhuǎn)帖|使用教程|編輯:我只采一朵|2014-04-08 10:13:08.000|閱讀 2798 次
概述:本文跟大家分享了如何讓水晶報(bào)表動態(tài)傳遞參數(shù)并形成報(bào)表。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
我最近做了個(gè)小東西,要用到打?。瓟?shù)據(jù)輸出,于是選擇了水晶報(bào)表。 我用的是水晶報(bào)表VS2010。對于在報(bào)表中連接數(shù)據(jù)庫,相對比較簡單,下面想跟大家分享下如何讓報(bào)表動態(tài)傳遞參數(shù),然后形成報(bào)表文件,這可能在實(shí)際工作地很多情況下,都用得到。
我用到的前臺技術(shù)是ASP.NET。這是.NET下關(guān)于水晶報(bào)表參數(shù)的一些API:parameterfields類、parameterfield類、parameterdiscretevalue類、parameterrangevalue類等。關(guān)于這些API的一些具體的用法,可以參考MSDN。
還要注意使用這些類的時(shí)候,要加上如下命名空間:
using CrystalDecisions.CrystalReports .Engine ;
using CrystalDecisions.Shared ;
下面來看看具體的代碼使用:
#region--------------向報(bào)表傳遞參數(shù)-------------------- ParameterFields paraFields =new ParameterFields (); ParameterField[] paraField=new ParameterField [8]; ParameterDiscreteValue[] discreteValue=new ParameterDiscreteValue [8]; ParameterRangeValue rangeValue=new ParameterRangeValue (); paraField[0]=new ParameterField (); paraField[0].ParameterFieldName ="Name"; discreteValue[0]=new ParameterDiscreteValue (); discreteValue[0].Value =(string)Session["Name"]; paraField[0].CurrentValues .Add (discreteValue[0]); paraField[1]=new ParameterField (); paraField[1].Name ="MajorName"; discreteValue[1]=new ParameterDiscreteValue (); discreteValue[1].Value =(string)Session["MajorName"]; paraField[1].CurrentValues .Add (discreteValue[1] ); paraField[2]=new ParameterField (); paraField[2].Name ="YearName"; discreteValue[2]=new ParameterDiscreteValue (); discreteValue[2].Value =(string)Session["YearName"]; paraField[2].CurrentValues .Add (discreteValue[2]); paraField[3]=new ParameterField (); paraField[3].Name ="TuitionPay"; discreteValue[3]=new ParameterDiscreteValue (); discreteValue[3].Value =Convert.ToDecimal (Session["TuitionPay"]); paraField[3].CurrentValues .Add (discreteValue[3]); paraField[4]=new ParameterField (); paraField[4].Name ="TuitionOwed"; discreteValue[4]=new ParameterDiscreteValue (); discreteValue[4].Value =Convert.ToDecimal (Session["TuitionOwed"]); paraField[4].CurrentValues .Add (discreteValue[4]); paraField[5]=new ParameterField (); paraField[5].Name ="Year"; discreteValue[5]=new ParameterDiscreteValue (); discreteValue[5].Value =(string)Session["Year"]; paraField[5].CurrentValues .Add (discreteValue[5]); paraField[6]=new ParameterField (); paraField[6].Name ="Month"; discreteValue[6]=new ParameterDiscreteValue (); discreteValue[6].Value =(string)Session["Month"]; paraField[6].CurrentValues .Add (discreteValue[6]); paraField[7]=new ParameterField (); paraField[7].Name ="Day"; discreteValue[7]=new ParameterDiscreteValue (); discreteValue[7].Value =(string)Session["Day"]; paraField[7].CurrentValues .Add (discreteValue[7]); foreach(ParameterField pf in paraField) { paraFields.Add (pf); } ReportDocument rptdoc=new ReportDocument (); rptdoc.Load (Server.MapPath ("../agreementTest.rpt")); this.CrystalReportViewer1.ReportSource =rptdoc; this.CrystalReportViewer1.ParameterFieldInfo =paraFields; this.CrystalReportViewer1 .DataBind (); //this.CrystalReportViewer1 .RefreshReport (); #endregion
需要說明的是,必須在水晶報(bào)表里面先創(chuàng)建這些參數(shù),才可以使用(而且報(bào)表里的參數(shù)和代碼里的參數(shù)保持一致)。另外就是在水晶報(bào)表10里參數(shù)創(chuàng)建的時(shí)候,可以選擇創(chuàng)建離散值參數(shù)(discrete),也可以選擇創(chuàng)建連續(xù)值參數(shù)(range),那么對應(yīng)的代碼中要用不同的類(parameterdiscretevalue和parameterrangevalue)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件