添加自定义方法 
/// 
/// 初始化报表
/// 
private void ConfigureCrystalReports()
{
 //当前业务的报表打印文件
 string RPTFile = "";
 //当前业务的报表打印数据集
 DataSet ds = null; 
 #region 获取报表打印文件
 if (Session["rf"] == null)
 {
 RPTFile = Server.MapPath("Demo.rpt");
 Session["rf"] = RPTFile;
 }
 else
 RPTFile = Session["rf"].ToString();
 #endregion 
 #region 获取当前业务的报表打印数据
 if (Session["pd"] == null)
 {
 ds = new DataSet();
 string sql = "";
 sql = "select * from SalesMaster where BItemSerialNumber='0802280001'";
 DataSet masterDs = 填充主表数据
 //将主表添加到报表数据集中
 ds.Merge(masterDs);
 //利用同样的方法添加子表或其他的表,甚至可以添加表和表之间的关系
 //上述方法也可以从其他数据源读入数据,包括Access数据库、xml数据等
 Session["pd"] = ds;
 }
 else
 ds = (DataSet)Session["pd"];
 #endregion 
 if (Session["reportDocument"] == null)
 {
 reportDocument = new ReportDocument();
 reportDocument.Load(RPTFile);
 reportDocument.SetDataSource(ds);
 Session["reportDocument"] = reportDocument;
 }
 else
 reportDocument = (ReportDocument)Session["reportDocument"];
 ReportViewer.ReportSource = reportDocument;
}