usingSystem;usingSystem.Collections.Generic;usingSystem.Configuration;usingSystem.IO;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingStimulsoft.Report;namespacePE.IEM.Web
{public partial classreport : System.Web.UI.Page
{///
///将获取的报表放在阅读器中显示///
///
///
protected void Page_Load(objectsender, EventArgs e)
{
StiWebViewer1.Report=GetReport();
}///
///编辑报表///
///
///
protected void StiWebViewer1_ReportDesign(objectsender, EventArgs e)
{
StiWebDesigner1.Design(GetReport());
}///
///保存报表///
///
///
protected void StiWebDesigner1_SaveReport(objectsender, Stimulsoft.Report.Web.StiWebDesigner.StiSaveReportEventArgs e)
{var report =e.Report;
report.Save(GetReportPath());
}///
///获取报表///
///
privateStiReport GetReport()
{var report = newStiReport();//根据路径加载报表文件
report.Load(GetReportPath());//动态改变数据库连接
ChangeConnectString(report);//设置参数等
report.Compile();
SetReportParamaters(report);returnreport;
}private voidSetReportParamaters(StiReport report)
{
var dataSource =report.CompiledReport.DataSources;foreach (Stimulsoft.Report.Dictionary.StiDataSource ds indataSource)
{var param =Request.QueryString;foreach (string key inparam.Keys)
{if (!ds.Parameters.Contains(key)) continue;var p =ds.Parameters[key];var v =param[key];
p.ParameterValue=v;
}
}
}private stringGetReportPath()
{var path = String.Format("~/Areas/{0}/Reports/{1}.mrt",Request["area"], Request["rpt"]);
path=Server.MapPath(path);if (!System.IO.File.Exists(path))
//如果报表文件不存在,返回默认的报表文件
path= Server.MapPath("~/Content/page/reports/helloworld.mrt");returnpath;
}private voidChangeConnectString(StiReport report)
{
foreach (Stimulsoft.Report.Dictionary.StiSqlDatabase item inreport.Dictionary.Databases)
{var prefix = item.Name.Split(‘_‘)[0];
item.ConnectionString= ConfigurationManager.ConnectionStrings["sqlConnection"].ConnectionString;
}
}}
}