s="File://D:/Design/CSharp/海宏校园自助一体机/Reports/学生成绩一览表_背景图.png";
ReportParameter parBeijingtu = new ReportParameter("beijingtu", s);
viewer.LocalReport.SetParameters(parBeijingtu);
RDLC用参数很容易变成2016版,这个没解决。
//读取打印文件
sDir = Server.MapPath("~/reports/");
sFile = sDir + 打印模板文件;
viewer.LocalReport.ReportPath = sFile;
viewer.LocalReport.ReportEmbeddedResource = Path.GetFileName(sFile);
viewer.LocalReport.EnableExternalImages = true; //外置图片
//绑定数据
//ds = new ds_Main();
viewer.LocalReport.DataSources.Clear();
for (int i = 0; i < tableList.Count; i++)
{
DataTable itm = tableList[i];
s = itm.TableName;
if (s.ToUpper() == "SHEZHI") { dtShezhi = itm; continue; } //设置库单独加
if (string.IsNullOrEmpty(s)) s = "table" + i.ToString();
//
dds = new ReportDataSource(s, itm);
viewer.LocalReport.DataSources.Add(dds);
}
//设置库
if (dtShezhi == null) dtShezhi = new DataTable();
DataColumnCollection cols = dtShezhi.Columns;
if (cols.IndexOf("beijingtu") < 0) dtShezhi.Columns.Add(new DataColumn("beijingtu", typeof(string)));
if (cols.IndexOf("gongsiming") < 0) dtShezhi.Columns.Add(new DataColumn("gongsiming", typeof(string)));
if (dtShezhi.Rows.Count > 0) s = dtShezhi.Rows[0]["beijingtu"].ToString(); else s = "";
//背景图
sImg = sDir + Path.GetFileNameWithoutExtension(打印模板文件) + "_背景图.png";
if (string.IsNullOrEmpty(s) && File.Exists(sImg))
{ //右键,主体属性,File://D:/Design/CSharp/海宏校园自助一体机/Reports/学生成绩一览表_背景图.png
s = "File://D:/Design/CSharp/海宏校园自助一体机/Reports/学生成绩一览表_背景图.png";
s = "File://" + sImg.Replace("\\", "/");
//发现参数的方式就成了2016版,加载报错,改用shezhi数据集
//ReportParameter parBeijingtu = new ReportParameter("beijingtu", s);
//viewer.LocalReport.SetParameters(parBeijingtu);
if (dtShezhi.Rows.Count > 0) dr = dtShezhi.Rows[0];
else
{
Gs_DataFunction.initializeRecord(dr = dtShezhi.NewRow());
dtShezhi.Rows.Add(dr);
}
dr["beijingtu"] = s;
}
//最后把设置库注册进去
dds = new ReportDataSource("shezhi", dtShezhi);
viewer.LocalReport.DataSources.Add(dds);
//刷新界面
viewer.LocalReport.Refresh();
nPage = viewer.LocalReport.GetTotalPages();
这样报表的设置数据集就有了个字段:beijingtu
报表格式这样设计:
OK了。