- Asp.net报表ReportViewer设计(RDLC)
ReportViewer是微软的报表控件,其设计文件为RDLC,数据架构为数据集。效果图如下:
其中序号调用的是内置函数,姓名、收入、所属部门绑定的是数据源,头像绑定的是URL指向的外部图片。下面是实现过程。
一.新增数据集
1.在创建Web空项目后,在项目上右键->添加->新建项->数据->选择数据集,见下图
2.将数据集命名为DataSet1_DataTable1
3.双击DataSet1_DataTable1.xsd,然后在界面上右击,添加数据表。
4.在数据表DataTable1中添加相应的列。
5.将Income列的数据类型设置为Decimal.
选中字段Income,右击->属性->设置DataType
二.设计RDLC
1.创建RDLC。
项目中右击->添加->新建项->Reporting->报表。
命名为Report1.rdlc
2.添加参数.
双击Report.rdlc,添加参数。
3.使用参数
在工具箱中拖入一个文本框,选中文本框->右击->文本属性->fx->设置参数。具体见下图。
如果需要在参数前增加固定的文字,需要将文字用双引号引起来,并用&连接,如果后面所连接的文字是数字的,需要使用Format函数将其转化为字符串。
3.设计数据表
(1).加入数据集
(2).工具箱中拖入一个“表”,再从报表数据->数据集->选择相应字段->拖入到表中,再设置对应的标题。
(3).序号列
(4).头像列
三.aspx页面
1.新建default.aspx页
2.在页面中增加控件ScriptManager和ReportViewer
3.为ReportViewer配置报表Report1
4.删除不需要的代码
5.后端代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
public
partial
class
_default : System.Web.UI.Page
{
protected
void
Page_Load(object sender, EventArgs e)
{
if
(!IsPostBack)
{
ReportViewer1.LocalReport.EnableExternalImages =
true
;
ReportViewer1.LocalReport.ReportPath = Report1.rdlc;
ReportViewer1.LocalReport.SetParameters(
new
ReportParameter(ReportParameter1, Guid.NewGuid().ToString()));
DataTable dt = GetData();
ReportDataSource rds =
new
ReportDataSource(DataSet1_DataTable1, dt);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();
}
}
/// <summary>
/// 模拟数据
/// </summary>
/// <returns></returns>
private
DataTable GetData()
{
DataTable dt =
new
DataTable(dataname);
dt.Columns.Add(
new
DataColumn(Name, typeof(string)));
dt.Columns.Add(
new
DataColumn(Income, typeof(decimal)));
dt.Columns.Add(
new
DataColumn(Dept, typeof(string)));
dt.Columns.Add(
new
DataColumn(Picture, typeof(string)));
DataRow row = dt.NewRow();
row[Name] = 张三;
row[Income] =
1000
.00m;
row[Dept] = 人事部门;
row[Picture] = https:
//localhost:60000/demo_pictures/person1.jpg;
dt.Rows.Add(row);
row = dt.NewRow();
row[Name] = 李四;
row[Income] =
1200
.00m;
row[Dept] = 人事部门;
row[Picture] = https:
//localhost:60000/demo_pictures/person2.jpg;
dt.Rows.Add(row);
row = dt.NewRow();
row[Name] = 王五;
row[Income] =
2000
.00m;
row[Dept] = 技术部门;
row[Picture] = https:
//localhost:60000/demo_pictures/person3.jpg;
dt.Rows.Add(row);
return
dt;
}
}
|