您的当前位置:首页正文

微软RDLC报表动态图片(二维码)

2020-05-10 来源:个人技术集锦


微软RDLC报表,动态加载图片文件(二维码)

我是一个程序员,有时候莫名其妙的遇到一些不好解决的问题,于是我就记录了下来,希望对大家有用!

开发环境:VS2010(中文),IIS7.0,IE8及以上

1、 首先讲一下,我的动态的图片是一个二维码。

(1)引用一下ThoughtWorks.QRCode.dll这个DLL,如果没有的话去网上下载一

ThoughtWorks.QRCode.rar个。或者我这个word文档里面是有一个的

(2)然后呢,当然要有一个存放二维码的文件夹,用来 存放生成之后的二维码,这个名字随便起

(3)最后,当然是报表后台的代码了,不过RDLC报表是动态生成的,要写在aspx.cs里面,写的这么清楚了,大家不会不明白吧:

private void create_two(string nr)//nr 这个参数当然是需要生成二维码的文字或字段

{

Bitmap bt;

string enCodeString = nr;

QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();

bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);

string filename = nr;

bt.Save(Server.MapPath(\"~/QRImage/\") + filename + \".jpg\");

}

(4)当然如果报错了,报红线了,那当然要去解析一下,system.drawing神马的,去引用一下吧,当然你加进来的ThoughtWorks也要去引用一下。

(例如using houghtWorks.QRCode.Codec;)

2、 当然是要把生成的这个二维码放到恶心的RDLC报表上,这里讲解的是VS2010,如果环境不对,请绕路。

(1)

我觉得注解的够清楚了。

(2)

(3)后台代码绑定

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

string sid = Request.QueryString[\"id\"];

ReportViewer1.ProcessingMode = ProcessingMode.Local;

ReportViewer1.LocalReport.ReportPath =

erver.MapPath(\"~/Report/Report/SDBXZ.rdlc\");

ReportViewer1.LocalReport.EnableExternalImages = true;

StringBuilder sb = new StringBuilder();

sb.Append(\"select * from SDBXZ_View where JGJSID='\" + sid + \"'\");

string con =

System.Configuration.ConfigurationManager.ConnectionStrings[\"CostManagementSystem\"].ToString();

DataSet ds = new DataSet();

SqlConnection sqlcon = new SqlConnection(con);

SqlCommand sqlcom = new SqlCommand(sb.ToString(), sqlcon);

SqlDataAdapter sqlad = new SqlDataAdapter();

sqlad.SelectCommand = sqlcom;

sqlad.Fill(ds, \"sql\");

///取得一个字段,我取得是GUID

string guid =

ds.Tables[\"sql\"].Rows[0][\"JGJSID\"].ToString().Replace(\"-\",\"\").Trim();

///生成二维码,并保存到指定目录,在最上面这个方法已经写在那里了

create_two(guid);

///拼接一个URL(存放图片的URL)

string url = \"file:///\" + Server.MapPath(\"~/QRImage/\") + guid + \".jpg\";

LocalReport report = ReportViewer1.LocalReport;

///把URL付给参数EWM(图片绑定的参数)

report.SetParameters(new ReportParameter(\"EWM\", url));

ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource(\"DataSet1\", ds.Tables[\"sql\"]));

ReportViewer1.DataBind();

this.ReportViewer1.ServerReport.Refresh();

}

}

3、测试下吧,大功告成!

因篇幅问题不能全部显示,请点此查看更多更全内容