首页logo
  •  

jonllen

金龙,目前就职于一家软件公司,从事Java和.Net信息安全开发设计。

个人档案

jonllen
心情闪存 | 给他留言
妮称:jonllen
来自:中国. 湖南. 湘潭
简述:金龙,目前就职于一家软件公司,从事Java和.Net信息安全开发设计。
博客日历

使用ReportViewer的rdlc图形报表

分类:Asp.Net

ReportViewer是.Net中集成的报表控件,有ReportViewer Web 服务器控件和ReportViewer Windows 窗体控件两种版本,支持ASP.NET和WinForm应用程序。ReportViewer可以配置为以本地处理模式或远程处理模式运行,本地处理模式即在客户端应用程序中处理报表,使用客户端报表定义rdlc文件,远程处理模式是指由Reporting Services 报表服务器处理报表。对于使用数据集和比较简单的报表,可以使用本地处理模式客户端报表,我这里主要讲述ReportViewer的LocalReport动态生成图形报表。

1.饼图报表

首先新建一个.rdlc报表文件,可以不使用向导默认创建的.xsd数据源,我这里主要是使用程序动态设置ReportDataSource数据源。rdlc全称Report Definition Language Client-side processing,是一个xml文本文件,可以直接修改数据源和呈现方式样式等定义,当然也可以在可视化设计视图中修改。

在后台我们可以通过编码动态指定报表一个DataTable实例为数据源,同时rdlc中在使用该数据源呈现报表,但指定的数据源名称和rdlc中使用的数据源和字段必须一致,即后台设置的DataSources数据源中的名称字段必须和rdlc文件中定义的DataSet名称Field一致,否则可能会出现“尚未为数据源 提供数据源实例”的错误。

/// 后台代码 protected void Page_Load(object sender, EventArgs e) { ReportDataSource rds = new ReportDataSource(); rds.Name = "ds"; //指定DataTable数据源 rds.Value = new FA_Article_dao().funcGetMemberZxSummary(memberType, result, timeBegin, timeEnd); ReportViewer1.LocalReport.DataSources.Clear(); ReportViewer1.LocalReport.DataSources.Add(rds); } // rdlc报表文件片断 <?xml version="1.0" encoding="utf-8"?> <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"> <DataSources> <DataSource Name="DummyDataSource"> <rd:DataSourceID>a400a5dd-107b-4d66-a42a-07c16c9b9c5b</rd:DataSourceID> <ConnectionProperties> <DataProvider>SQL</DataProvider> <ConnectString /> </ConnectionProperties> </DataSource> </DataSources> <InteractiveHeight>29.7cm</InteractiveHeight> <rd:DrawGrid>true</rd:DrawGrid> <InteractiveWidth>21cm</InteractiveWidth> <rd:GridSpacing>0.25cm</rd:GridSpacing> <rd:SnapToGrid>true</rd:SnapToGrid> <RightMargin>2.5cm</RightMargin> <LeftMargin>2.5cm</LeftMargin> <BottomMargin>2.5cm</BottomMargin> <rd:ReportID>b284c19b-7970-4a19-b56c-1af4648e2787</rd:ReportID> <PageWidth>21cm</PageWidth> <DataSets> <DataSet Name="ds"> <Fields> <Field Name="fdUserType"> <DataField>fdUserType</DataField> <rd:TypeName>System.Int32</rd:TypeName> </Field> <Field Name="用户类型"> <DataField>用户类型</DataField> <rd:TypeName>System.String</rd:TypeName> </Field> <Field Name="记录数"> <DataField>记录数</DataField> <rd:TypeName>System.Int32</rd:TypeName> </Field> </Fields> <Query> <DataSourceName>DummyDataSource</DataSourceName> <CommandText /> <rd:UseGenericDesigner>true</rd:UseGenericDesigner> </Query> </DataSet> </DataSets> <Width>19.25cm</Width> <Body></Body> <Language>zh-CN</Language> <TopMargin>2.5cm</TopMargin> <PageHeight>29.7cm</PageHeight> </Report>

2.柱形图报表

柱形图设计一般是使用类别组,如按年份或类别来分组,是柱形图中的X轴上显示的内容。Y轴上即是数值刻度,可以由一组柱形组成。每一组可由多个数值项组成,如每年份的销售金额、成本、利润等,每一项在柱形图中用不同的颜色标识显示。rdlc的柱形图中分简单柱形图、堆积柱形图、百分比堆积柱形,相关还条形图中的简单条形图、堆积条形图、百分比堆积条形图,可按呈现方式自由设置显示。

柱形图报表默认是不显示每一条柱形的具体数值的,如果觉得不直观可以编辑图表值,在点标签中显示点标签,饼图报表也可以通过此设置在每块扇区显示百分比,不过要用计算公式=FormatPercent(Sum(Fields!记录数.Value)/Sum(Fields!记录数.Value, "ds"),2)得出值,rdlc报表支持常量、运算符、常见函数等计算表达式。

3.折线图报表

折线图报表跟柱形图类似,rdlc提供了简单折线图、平滑线图的格式。同时支持自定义侧边距、网格线、显示标签样式属性、三维效果等。

在设置rdlc数据源时,可先根据检索条件分组好数据记录,并使用中文的别名字段,然后再动态的设置rdlc的数据源,这样rdlc报表就不要进行复杂的逻辑运算,只是按定义好的格式呈现出报表。

ReportViewer的rdlc客户端报表总体来说,使用简单易于部署,并提供了多种类型图形报表设计功能,xml文件定义方便灵活,是做动态图形报表好的选择。

标签:Asp.Net
  • posted@ 2011-07-28 23:04
  • update@
  • 阅读(15307)
  • 评论(1)

相关文章

评论
1楼 yecw111 2011-12-22 16:48:21
有道理
发表评论
*必填
回复通知我
*必填

博文推荐