RDLC 报表 引用外部图片 file用相对路径 开发工具vs2015
第一步 首先给自己的rdlc报表自定义参数,在视图找到Report Data 菜单 ,当然这个菜单 笔记本的不容易找到,点 视图 用滚轮 一直往下滚,最下面才是Report Data 菜单,点中参数,右键添加参数。
第二步 在rdlc报表上添加参数,图像源为外部,具体见图片
第三步 后台代码绑定代码如下,关键代码我用红色标识
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.Params["no"] != null && Request.Params["no"].Trim() != "")
{
string no = Request.Params["no"];
string nosql = @"declare @no varchar(20) set @no='" + no + @"'
SELECT * FROM Hpsn WHERE no = @no
SELECT * FROM Hatime WHERE [email protected] ";
DataSet ds = Maticsoft.DBUtility.DbHelperSQL.Query(nosql);
//绑定报表
Report1.LocalReport.EnableExternalImages = true; //(默认为false) 否则会报错 报表“Hprp1”包含外部图像。尚未为此报表设置 EnableExternalImages 属性。
Report1.LocalReport.ReportPath = MapPath("Hprp1.rdlc");
//绑定数据源
//注意dataset1必须和你报表所引用的table 一致
ReportDataSource rds = new ReportDataSource("Hpsn", ds.Tables[0]);//注意这里的name和报表中的一致
ReportDataSource rds10 = new ReportDataSource("Hatime", ds.Tables[1]);//注意这里的name和报表中的一致
string guid = ds.Tables[0].Rows[0]["ha31"].ToString();
string url = "file:///" + Server.MapPath("~/upload/") + guid;
//Response.Write(url); //测试 输出路径
Report1.LocalReport.DataSources.Clear();
Report1.LocalReport.SetParameters(new ReportParameter("EWM", url));//报表绑定参数
Report1.LocalReport.DataSources.Add(rds);
Report1.LocalReport.DataSources.Add(rds10);
Report1.LocalReport.Refresh();
}
}
}
我还发现我这边在本地是OK的,但是在服务器上出错了,后来发现是服务器上资料夹 upload 权限有问题,authenticated users 权限没有设定,设定之后就无其它问题了。