微软RDLC报表动态图片(二维码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微软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["CostM
anagementSystem"].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、测试下吧,大功告成!