代码
使用方法.先建了一个数据集做为数据源,作为水晶报表的数据架构.
protected
void
Page_Init(
object
sender, EventArgs e)
{
ConfigureCrystalReport();
}
protected void Page_Unload( object sender, EventArgs e)
{
if (rptDocument == null )
return ;
rptDocument.Close();
rptDocument.Dispose();
}
private void ConfigureCrystalReport()
{
string temp = BusinessObject.Util.Decrypt(Request.QueryString[ " toid " ]);
TourOrderId = Util.ConvertTo < int > (temp, 0 );
if (ViewState[ " reportdoc " ] == null )
{
string report_path = "" ;
report_path = Server.MapPath( " ~/Report/TourNote.rpt " );
DataSet ds = BusinessObject.TourOrders.GetTourNoteDsRpt(TourOrderId);
if (ViewState[ " reportdata " ] == null )
{
ViewState[ " reportdata " ] = ds;
}
else
{
ds = (DataSet)ViewState[ " reportdata " ];
}
rptDocument = new ReportDocument();
rptDocument.Load(report_path);
rptDocument.SetDataSource(ds);
rptDocument.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.DefaultPaperSize;
ViewState[ " reportdoc " ] = rptDocument;
}
else
{
rptDocument = (ReportDocument)ViewState[ " reportdoc " ];
}
this .CrystalReportViewer1.ReportSource = rptDocument;
this .CrystalReportViewer1.HasToggleGroupTreeButton = false ;
this .CrystalReportViewer1.DisplayGroupTree = false ;
}
{
ConfigureCrystalReport();
}
protected void Page_Unload( object sender, EventArgs e)
{
if (rptDocument == null )
return ;
rptDocument.Close();
rptDocument.Dispose();
}
private void ConfigureCrystalReport()
{
string temp = BusinessObject.Util.Decrypt(Request.QueryString[ " toid " ]);
TourOrderId = Util.ConvertTo < int > (temp, 0 );
if (ViewState[ " reportdoc " ] == null )
{
string report_path = "" ;
report_path = Server.MapPath( " ~/Report/TourNote.rpt " );
DataSet ds = BusinessObject.TourOrders.GetTourNoteDsRpt(TourOrderId);
if (ViewState[ " reportdata " ] == null )
{
ViewState[ " reportdata " ] = ds;
}
else
{
ds = (DataSet)ViewState[ " reportdata " ];
}
rptDocument = new ReportDocument();
rptDocument.Load(report_path);
rptDocument.SetDataSource(ds);
rptDocument.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.DefaultPaperSize;
ViewState[ " reportdoc " ] = rptDocument;
}
else
{
rptDocument = (ReportDocument)ViewState[ " reportdoc " ];
}
this .CrystalReportViewer1.ReportSource = rptDocument;
this .CrystalReportViewer1.HasToggleGroupTreeButton = false ;
this .CrystalReportViewer1.DisplayGroupTree = false ;
}
代码里面调用一个存储过程,返回拥有多张表的DataSet.