1.先创建一个报表数据集,添加所需要的所对应表
2.创建报表,设置所需要变量及添加数据集
3.下面设置要传递的参数及数据表集合
4.新建一个窗体放一个ReportViewer控件,把参数及数据集传递给此控件
//定义参数字典参数集,报表对应调用一个是变量名及变量值
Dictionary<string, string> param = new Dictionary<string, string>();
//param1变量名,paramvalue变量值
param.Add("param1","paramvalue");
//数据集
DataSet tablelist = new DataSet();
//数据表
tablelist.Tables.Add(dt.Copy());
//数据表命名对应的是报表的数据集名称
tablelist.Tables[0].TableName = "InsuranceTable";
//调用方法,第一个是报表名称,数据表集合,变量集
CustomerData.RirectPrint.PrintPreview("保单到期提醒", tablelist, param);
构造报表能使用变量集
public static void PrintPreview(string fileName,System.Data.DataSet tablelist,Dictionary<string,string> param) {
//报表直接使用的变量集
List<Microsoft.Reporting.WinForms.ReportParameter> paramList = new List<Microsoft.Reporting.WinForms.ReportParameter>();
foreach (KeyValuePair<string,string> kvp in param) {
paramList.Add(new Microsoft.Reporting.WinForms.ReportParameter(kvp.Key, kvp.Value));
}
//调用构造方法
PrintPreview printfrm = new PrintPreview(fileName,tablelist, paramList);
printfrm.ShowDialog();
}
参数传递给报表控件
public PrintPreview(string fileName,DataSet tablelist, List<ReportParameter> paramList)
{
InitializeComponent();
try
{
//开启打印模式,及默认100%尺寸显示
this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
this.reportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.Percent;
this.reportViewer1.ZoomPercent = 100;
this.reportViewer1.LocalReport.DataSources.Clear();
//设置报表路径
this.reportViewer1.LocalReport.ReportPath = System.Environment.CurrentDirectory + @"\reports\" + fileName + ".rdlc";//查找要绑定的报表
//报表集合
foreach (DataTable table in tablelist.Tables) {
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(table.TableName, table)); //绑定数据源
}
this.reportViewer1.LocalReport.SetParameters(paramList);
this.reportViewer1.RefreshReport();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}