一、定义
Reportviewer 是Microsoft Visual Studio 自带的控件之一,用于数据的统计与打印导出。有着良好的可操作性和可视性,适用于简单的统计。 报表可以包含表格格式数据、聚合数据和多维数据。 提供 ReportViewer 控件的目的是可以处理和显示应用程序中的报表。
二、创建报表
首先在页面中添加Reportviewer控件
在页面中添加rdlc文件
插入矩阵进行设计,并选择数据源
设置行组和列组,并进行统计
在原来的页面上操作ReportViewer控件,设置的报表来源为刚才添加的rdlc文件(这里我设置的是Report1.rdlc),同时设置数据源,如果是vs2012的话,需要ScriptManager。
页面呈现效果
三、操作
一、为报表设置跳转链接
可以设置固定的跳转链接,例如这里的就是跳转到百度。设置文本框属性->操作->表达式->fx->赋值。同时这里为了更有链接的效果设置了字体的颜色为蓝色
设置活动的路径,比如本地虚拟路径。首先在ReportViewer页面的后台为Reportviewer的可链接属性为true,然后将路径参数赋值给VirtualPath参数。在rdlc的Xml文件中添加参数,最后在报表的操作中使用表达式进行跳转
二、字符串的连接
报表中使用 & 来进行字符串的连接 例如这里:=Parameters!VirtualPath.Value & "WebForm2.aspx" 就是将本地路径字符串与"WebForm2.aspx"连接成一个路径字符串用于跳转
三、报表表达式的书写
四、报表打印文档类型的限制
ReportViewer提供了三种报表的输出(PDF,word,excel) , 有时候需要限制报表的输出文档的类型。可以在ReportViewer1_PreRender事件中添加如下代码(这里限制了输出的文档类型为PDF)
protected void ReportViewer1_PreRender(object sender, EventArgs e)
{
RenderingExtension[] resut = ReportViewer1.LocalReport.ListRenderingExtensions();
foreach (RenderingExtension item in ReportViewer1.LocalReport.ListRenderingExtensions())
{
// item 具有Visable属性,但是这个属性是只读属性,不能修改,所以通过反射进行了修改
if (item.Name.ToUpper() == "EXCEL")
{
// bu显示excel2003格式导出按钮
FieldInfo fi = item.GetType().GetField("m_isVisible", BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(item, false);
}
if (item.Name.ToUpper() == "WORD")
{
// bu显示word2003导出按钮
FieldInfo fi = item.GetType().GetField("m_isVisible", BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(item, false);
}
if (item.Name.ToUpper() == "PDF")
{
// 显示PDF版本的格式
FieldInfo fi = item.GetType().GetField("m_isVisible", BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(item, true);
}
}
}
这是我尝试的简单的报表实例(网盘链接)