Visual Studio2010 Microsoft 报表 #1
Visual Studio2010 Microsoft 报表 #1
前段时间我负责的一个项目中因为报表的缘故让项目整整延期了3个月。虽然也有客户方的原因,而我们公司的领导也能体谅到项目组的难处。但是终究还是被扣掉了一些项目奖金。客户的报表太过重于格式了,这一点客户方也没有办法,因为他们的表格样式是集团公司指定好的,不能随意更改。我们的客户大多来自于有国企性质的公司。所以为了以后项目的快速实施,必须找到一种方便,快捷,最重要能满足需求的报表工具。
在那个项目过后,我尝试使用了很多种报表工具,但都觉得不是很能满足我们的要求。我们也曾经想过自己实现一种报表工具,但出于人手、时间、和经费、可行性的考虑最终还是打消了这个念头。这个时候微软发布了SQL Server 2008 R2,它另我为异常兴奋。这正是我们做要寻找的工具。但是很遗憾
很抱歉都个小懒,我的表只有两个字段一个填充方法。
我们在创建一个类用作对象数据源,很高兴微软报表支持一个报表内使用不同的数据源。下面是我的:
|
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
|
namespace RdlcReports.Model{ public class info { public string Author { get; set; } public string Blog { get; set; } public string Email { get; set; } public info(string author, string blog, string Email) { this.Author = author; this.Blog = blog; this.Email = Email; } public info() { } public List<info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info> Getinfo() { List<info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info> objdata = new List<info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info><info></info>(); objdata.Add(new info("junior lau", "www.cnblogs.com", "Email:Lauyee@foxmail.com")); return objdata; } }} |
5、接下来我们创建一个报表文件。选择添加-新建项-报表。我这里创建了一个名为Report1.rdlc的报表文件。
我有点迫不及待了,才到这里。下面是我的界面

6、点击报表数据-新建-数据集,选择一个数据源。这时候我们可以把刚才创建的Dataset1的计划表添加到报表的数据源中。
1)你可以直接向上面那样用设计器添加一个类型化的DataSet到报表的数据源,但是我发现在Web项目中没有可以让你选择的可视化的操作。如果你使用WinForm做这个练习,很幸运设计器强帮你完成一切。
2)如果你想使用对象数据源,如用上面所创建的info类作为数据源,可以直接修改.rdlc源代码(用右键Report1.rdlc选择打开方式--XML(文本)编辑器要比直接右击-查看代码好一点)
将下面代码拷贝到 <DataSources></DataSources>标签之间
|
1
2
3
4
5
6
7
|
<DataSource Name="RdlcReportsModel"> <ConnectionProperties> <DataProvider>System.Data.DataSet</DataProvider> <ConnectString>/* Local Connection */</ConnectString> </ConnectionProperties> <rd:DataSourceID>bf49000a-37a9-4c7a-ae02-33575f080028</rd:DataSourceID></DataSource> |
将下面代码拷贝到<DataSets></DataSets>之间
|
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
|
<DataSet Name="DataSet2"> <Fields> <Field Name="Author"> <DataField>Author</DataField> <rd:TypeName>System.String</rd:TypeName> </Field> <Field Name="Blog"> <DataField>Blog</DataField> <rd:TypeName>System.String</rd:TypeName> </Field> <Field Name="Email"> <DataField>Email</DataField> <rd:TypeName>System.String</rd:TypeName> </Field> </Fields> <Query> <DataSourceName>RdlcReportsModel</DataSourceName> <CommandText>/* Local Query */</CommandText> </Query> <rd:DataSetInfo> <rd:DataSetName>RdlcReports.Model</rd:DataSetName> <rd:TableName>info</rd:TableName> <rd:ObjectDataSourceType>RdlcReports.Model.info, RdlcReports.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</rd:ObjectDataSourceType> </rd:DataSetInfo> </DataSet> |
现在你将得到以下的画面:

接下来,你可以自由设计你的报表了,下面是我的。

7、下来开始完成aspx页面。就是拖ReportViewer控件,更改其属性让其指向.rdlc文件。直接贴代码了。忘了一点页面上需要一个ScriptManager控件。
|
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
|
<body> <form id="form1" runat="server"> <div> <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" Height="414px" InteractiveDeviceInfos="(集合)" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="716px"> <LocalReport ReportPath="Report1.rdlc"> <DataSources> <rsweb:ReportDataSource DataSourceId="ObjectDataSource1" Name="DataSet1" /> <rsweb:ReportDataSource DataSourceId="ObjectDataSource2" Name="DataSet2" /> </DataSources> </LocalReport> </rsweb:ReportViewer> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetData" TypeName="RdlcReports.Web.DataSet1TableAdapters.计划TableAdapter"> </asp:ObjectDataSource> <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="Getinfo" TypeName="RdlcReports.Model.info"> </asp:ObjectDataSource> </div> </form></body> |
后台没有写一句话,现在运行程序,就会出现以下的话面。(附带的原代码包含了一种,用代码在后台绑定的模式,而不是在页面使用ObjectDataSource控件)

好了,好像写了好多,但是其实操作很简单,也没有多少难度,只是让大家对微软报表有一个基本的概念。本来来打算在讲一点功能介绍呢,就留到下一节吧。
附带的原代码中不包含,win和wpf的代码,(win要比web简单些)如果你需要也可以回复向我索取,或者在下一节下载代码。我计划在这个可能结束的时候将代码发布为一个小的开源项目。
编码愉快!!下次见。

浙公网安备 33010602011771号