最近一个项目中,涉及到很多报表的开发,以前对水晶报表搞得比较熟,但它的庞大与其它诸多功能限制,特别是发布与部置时面临的困难,实在让人无法忍受(应该很少有人买得起正版吧),决定试一下MS Reporting Services,当然在这里只使用Local Report,对微软的Reporting Services进行了一番了解,蜡人张(http://www.cnblogs.com/waxdoll/category/49402.html)老兄这里有很多很好的学习材料,我也是从蜡人兄那里对自定义报表的研究得出以下部分修正的Demo.
对于微软提供的ReportView控件,大家都知道,不能在其中对报表的边距等进行自定义,其工具条也是根本上无法自定义控制的,每次用户打印时,都必须对页面,边距等进行调整,对用户来说,这可能是一件无法忍受的事情,这或者是为满足Reporting Services报表而这样设计的.
对蜡人张老兄提供的例子做了一些改进,主要修正以下几点:
1,修正无法使用网络打印机进行打印的问题;
2,报表使用钳入式资源加载方式;
3,提取成一用户控件ReportView,更方便于开发人员将其整合到自己的项目中
Demo文件结构:
自定义报表控件ReportView源码分如下:
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Drawing;
5
using System.Data;
6
using System.Text;
7
using System.Windows.Forms;
8
using System.IO;
9
using Microsoft.Reporting.WinForms;
10
namespace LocalReportDemo.Report
11
{
12
public partial class ReportViewer : UserControl
13
{
14![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
private EMFStreamPrintDocument printDoc;
16![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
/// <summary>
18
/// 主报表名称
19
/// </summary>
20
private string m_ReportName = string.Empty;
21
public string ReportName
22
{
23
get
24
{
25
return this.m_ReportName;
26
}
27
set
28
{
29
this.m_ReportName = value;
30
}
31
}
32![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
/// <summary>
34
/// 主报表数据源
35
/// </summary>
36
private object m_MainDataSet = null;
37
public object MainDataSet
38
{
39
get
40
{
41
return this.m_MainDataSet;
42
}
43
set
44
{
45
this.m_MainDataSet = value;
46![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
}
48
}
49![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
/// <summary>
51
/// 主报表数据源名称
52
/// </summary>
53
private string m_MainDataSourceName = string.Empty;
54
public string MainDataSourceName
55
{
56
get
57
{
58
return this.m_MainDataSourceName;
59
}
60
set
61
{
62
this.m_MainDataSourceName = value;
63
}
64
}
65![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
66
/// <summary>
67
/// 钳入资源中的报表路径
68
/// </summary>
69
private string m_ReportEmbeddedResource;
70
public string MReportEmbeddedResource
71
{
72
get
73
{
74
return m_ReportEmbeddedResource;
75
}
76
set
77
{
78
m_ReportEmbeddedResource = value;
79
}
80
}
81![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
/// <summary>
83
/// 钻取报表数据源
84
/// </summary>
85
private object m_DrillDataSet = null;
86
public object DrillDataSet
87
{
88
get
89
{
90
return this.m_DrillDataSet;
91
}
92
set
93
{
94
this.m_DrillDataSet = value;
95
}
96
}
97
/// <summary>
98
/// 钻取报表数据源名称
99
/// </summary>
100
private string m_DrillDataSourceName = string.Empty;
101
public string DrillDataSourceName
102
{
103
get
104
{
105
return this.m_DrillDataSourceName;
106
}
107
set
108
{
109
this.m_DrillDataSourceName = value;
110
}
111
}
112![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
/// <summary>
114
/// 构造器
115
/// </summary>
116
public ReportViewer()
117
{
118
InitializeComponent();
119
this.Dock = System.Windows.Forms.DockStyle.Fill;
120
}
121![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
/// <summary>
123
/// 加载窗体事件
124
/// </summary>
125
/// <param name="sender"></param>
126
/// <param name="e"></param>
127
private void rpv1_Load(object sender, EventArgs e)
128
{
129
}
130
/// <summary>
131
/// 加载报表
132
/// </summary>
133
public void BindReport()
134
{
135![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
136
System.Type type = this.MainDataSet.GetType();
137
if (this.m_MainDataSet == null)
138
{
139
MessageBox.Show("报表数据源不存在或为空!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
140
return;
141
}
142
if (type == null)
143
{
144
System.Windows.Forms.MessageBox.Show("报表数据源格式不正确!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
145
return;
146
}
147
else
148
{
149
System.Reflection.PropertyInfo[] picData = type.GetProperties();
150
bool bolExist = false;
151
foreach (System.Reflection.PropertyInfo piData in picData)
152
{
153
if (piData.Name == "Tables")
154
{
155
bolExist = true;
156![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
if (MainDataSourceName == string.Empty)
158
{
159
MessageBox.Show("报表数据源不存在或为空!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
160
return;
161
}
162![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
this.rpv1.LocalReport.DataSources.Add(
164
new Microsoft.Reporting.WinForms.ReportDataSource(this.MainDataSourceName,
165
(piData.GetValue(this.MainDataSet, null) as System.Data.DataTableCollection)[0])
166
);
167
this.rpv1.LocalReport.ReportEmbeddedResource = this.MReportEmbeddedResource;
168
this.rpv1.RefreshReport();
169
this.lblTotal.Text = @"/" + (this.rpv1.LocalReport.GetTotalPages()+1).ToString();
170
this.tbxPage.Text = "1";
171
break;
172
}
173
}
174![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
if (!bolExist)
176
{
177
System.Windows.Forms.MessageBox.Show("报表数据源格式不正确!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
178
return;
179
}
180
}
181
}
182![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
工具条事件
368![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
369
/// <summary>
370
/// 钻取报表事件
371
/// </summary>
372
/// <param name="sender"></param>
373
/// <param name="e"></param>
374
private void rpv1_Drillthrough(object sender, DrillthroughEventArgs e)
375
{
376
if (DrillDataSet == null)
377
{
378
MessageBox.Show("报表数据源不存在或为空!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
379
return;
380
}
381
else
382
{
383
if (this.DrillDataSourceName == string.Empty)
384
{
385
System.Windows.Forms.MessageBox.Show("报表数据源格式不正确!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
386
return;
387
}
388
else
389
{
390
Microsoft.Reporting.WinForms.LocalReport report = e.Report as Microsoft.Reporting.WinForms.LocalReport;
391
report.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(this.DrillDataSourceName, this.GetTableCollection(this.DrillDataSet)[0]));
392
}
393
}
394
}
395
private System.Data.DataTableCollection GetTableCollection(object ReportSource)
396
{
397
System.Type type = ReportSource.GetType();
398![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
399
if (type == null)
400
{
401
MessageBox.Show("报表数据源格式不正确!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
402
return null;
403
}
404
else
405
{
406
System.Reflection.PropertyInfo[] picData = type.GetProperties();
407
bool bolExist = false;
408
foreach (System.Reflection.PropertyInfo piData in picData)
409
{
410
if (piData.Name == "Tables")
411
{
412
bolExist = true;
413
return piData.GetValue(ReportSource, null) as System.Data.DataTableCollection;
414
}
415
}
416![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
417
if (!bolExist)
418
{
419
MessageBox.Show("报表数据源格式不正确!", "提醒对话框", MessageBoxButtons.OK, MessageBoxIcon.Information);
420
return null;
421
}
422
}
423
return null;
424
}
425
}
426
}
427![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
82
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
83
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
84
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
85
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
86
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
88
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
96
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
97
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
98
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
100
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
102
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
103
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
104
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
105
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
106
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
107
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
108
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
109
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
110
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
111
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
112
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
114
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
118
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
119
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
120
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
121
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
123
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
125
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
126
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
127
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
129
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
130
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
131
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
133
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
134
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
135
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
136
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
137
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
138
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
139
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
140
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
141
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
142
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
143
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
144
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
145
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
146
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
147
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
148
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
149
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
150
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
151
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
153
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
154
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
155
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
157
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
158
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
159
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
160
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
161
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
162
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
163
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
164
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
165
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
166
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
167
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
168
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
169
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
170
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
171
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
172
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
173
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
174
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
175
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
177
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
178
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
179
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
180
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
181
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
182
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
183
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
368
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
369
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
370
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
371
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
372
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
373
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
374
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
375
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
376
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
377
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
378
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
379
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
380
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
381
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
382
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
383
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
384
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
385
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
386
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
387
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
388
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
389
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
390
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
391
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
392
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
393
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
394
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
395
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
396
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
397
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
398
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
399
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
400
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
401
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
402
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
403
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
404
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
405
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
406
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
407
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
408
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
409
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
410
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
411
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
412
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
413
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
414
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
415
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
416
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
417
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
418
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
419
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
420
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
421
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
422
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
423
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
424
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
425
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
426
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
427
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
报表宿主窗口加载报表与数据源的方法:
1
DataSet ds = new DataSet();
2
ds.ReadXml(Application.StartupPath + @"\DataSource.xml");
3
this.reportViewer1.MainDataSet = ds;//报表主数据源
4
this.reportViewer1.MainDataSourceName = "ReportDemoDataSet_ReportDemoTable";//数据源名称
5
this.reportViewer1.MReportEmbeddedResource = "LocalReportDemo.ReportDemo.rdlc";//钳入资源的报表路径
6
this.reportViewer1.ReportName = "ReportDemo";//报表名称
7
this.reportViewer1.BindReport();//加载挷定报表
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
数据源名称如下图所示:
![](https://www.cnblogs.com/images/cnblogs_com/mshwu/report2.gif)
其中钳入资源的报表路径中,LocalReportDemo为报表钳入的程序集名称
报表格式配置文件ReportSettings.xml:
1
<?xml version="1.0" standalone="yes"?>
2
<ReportSettings>
3
<ReportDemo>
4
<ReportName>ReportDemo</ReportName>
5
<PrinterName>Microsoft Office Document Image Writer</PrinterName>
6
<PaperName>A4</PaperName>
7
<PageWidth>21.01</PageWidth>
8
<PageHeight>29.69</PageHeight>
9
<MarginTop>0.5</MarginTop>
10
<MarginBottom>0.2</MarginBottom>
11
<MarginLeft>2.3</MarginLeft>
12
<MarginRight>0.2</MarginRight>
13
<Orientation>Z</Orientation>
14
</ReportDemo>
15
</ReportSettings>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
此Demo运行效果:
![](https://www.cnblogs.com/images/cnblogs_com/mshwu/Report.gif)
打印预览:
![](https://www.cnblogs.com/images/cnblogs_com/mshwu/Report1.gif)
有任何问题欢迎在此提出,大家共同讨论解决
此Demo完整代码下载:
/Files/mshwu/LocalReportDemo.rar