上一篇介绍了客户端报表的基本开发。此篇讲介绍如何给客户端报表自定义开发数据源。
通过上一篇我们知道可以通过Dataset的方式给报表添加数据源,这种方式通过UI操作的方式相对来说比较简单。此外我们也可以通过其它方式为客户端报表提供数据源,使数据的组织更灵活。下面将介绍通过项目代码的方式为报表提供数据源。
回顾第三篇我们建立的SSRS报表,它的数据集的结构:
首先,基于上一篇建立的asp.net项目的基础上,添加一个类,这个类的结构将跟上面报表数据集中的结构一模一样。右键项目名称然后Add->New Item…
左侧选择Code,右侧选择Class,为项目添加一个类。
打开创建的类文件,将里面的代码全部替换成:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApplication3
{
public
class
ReportItem
{
public
string ProductCategory {
get; set; }
public
string ShipDate {
get; set; }
public
double ProductStandardCost {
get; set; }
public
double SalesAmount {
get; set; }
public
double TaxAmount {
get; set; }
}
}
可以看到这个类结构的定义和先前 SSRS报表的数据集结构是一样的。
接下来再在这个文件中加入另外一个类,ReportTools,用来暴露公共方法为客户端报表提供数据。
public
class
ReportTools
{
public
List<ReportItem> GetReport(string Year)
{
List<ReportItem> result =
new
List<ReportItem>();
SqlConnection conn =
new
SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["AdventureWorksDW2012ConnectionString"].ConnectionString);
conn.Open();
StringBuilder sb =
new
StringBuilder();
sb.AppendLine("SELECT ST.EnglishProductSubcategoryName AS ProductCategory");
sb.AppendLine(",LEFT([ShipDateKey],6) AS [SHIPDATE]");
sb.AppendLine(",SUM([ProductStandardCost]) AS [ProductStandardCost]");
sb.AppendLine(",SUM([SalesAmount]) AS SalesAmount");
sb.AppendLine(",SUM([TaxAmt]) AS [TaxAmt]");
sb.AppendLine("FROM [AdventureWorksDW2012].[dbo].[FactInternetSales] F");
sb.AppendLine("LEFT JOIN [dbo].[DimProduct] P ON F.ProductKey=P.ProductKey");
sb.AppendLine("LEFT JOIN [dbo].[DimProductSubcategory] ST ON P.[ProductSubcategoryKey]=ST.[ProductSubcategoryKey]");
sb.AppendLine("WHERE LEFT([ShipDateKey],4)=" + Year);
sb.AppendLine("GROUP BY ST.EnglishProductSubcategoryName, LEFT([ShipDateKey],6)");
SqlCommand comm =
new
SqlCommand(sb.ToString(), conn);
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
ReportItem ri =
new
ReportItem();
ri.ProductCategory = dr[0].ToString();
ri.ShipDate = dr[1].ToString();
ri.ProductStandardCost =
Convert.ToDouble(dr[2]);
ri.SalesAmount =
Convert.ToDouble(dr[3]);
ri.TaxAmount =
Convert.ToDouble(dr[4]);
result.Add(ri);
}
dr.Close();
conn.Close();
return result;
}
}
这段代码主要是讲SQL语句的结果装在到List集合类里。
为客户端报表添加完提供数据源的方法后,需要将项目编译一下,这样后续的客户端报表工具就可以检测出新创建的数据结构。
然后,添加另外一张客户端报表。
为报表添加一个数据集:
在数据集属性界面中,数据源直接选择项目的名称,然后在Available datasets: 选择刚才建立的方法:ReportTools(GetReport)。
可以看到检测出的数据结构跟 在SSRS下是一样的。
接下来,参照第三篇中的方法设计报表。
下面为这个报表创建一个承载它的asp.net页面,并且为它添加ScriptManager控件以及ReportViewer控件,选择此篇新建立的报表。
随后,系统为其自动生成了一个ObjectDataSource控件。
为页面添加一个DropDownList控件。
点击DropDownList控件向右的箭头,点击Edit Items…
为控件手动添加一些值。
点击OK关闭ListItem编辑器,回到设计界面。
选择DropDownList控件,在属性列表里修改AutoPostBack的属性为True。
DropDownList控件相关设置完毕,点击ObjectDataSource向右的箭头,选择Configure Data Source…
数据源配置界面,直接点Next。
可以看到系统检测到了报表中配置的方法,直接点击Next。
由于方法为报表数据源指定了一个参数,所以这里需要指定通过什么方式为数据源传进参数。
这里在参数源选择Control ,也就是指定参数的值是通过控件的值传入的。在ControlID指定刚才加入的DropDownList控件。
点击Finish完成数据源控件的配置。
最后,回到 aspx页面的Source视图,更改 ReportViewer控件的属性ReportPath,并且将默认的报表属性去掉:
接下来,将新建的asp.net页面,设置成开始页面,然后点击F5运行。
可以看到效果跟SSRS服务器端报表是一样的。
通过最近两篇对客户端报表的介绍,相信大家对客户端报表已经有了一个了解。一定程度上来说,在你不想去单独部署和维护一个报表服务的前提下,客户端报表确实是一个不错的选择方案。而且借助Coding的方式,数据的生成相对来说也更随意一些,比如从分析服务中加载数据到客户端报表中,也可以参考我先前的一篇随笔:
http://www.cnblogs.com/aspnetx/archive/2012/06/20/2556916.html
分享到:
相关推荐
[Packt Publishing] Dynamics AX SSRS 报表开发教程 (英文版) [Packt Publishing] Developing SSRS Reports for Dynamics AX (E-Book) ☆ 图书概要:☆ A step-by-step guide to Microsoft Dynamics AX 2012 ...
详细教程,教你如何利用SSRS创建基本表报表
SSRS报表服务笔记及总结,很有总结性的笔记
本文档简述了ssrs的详细开发步骤,通过它,你可以完成ssrs的基本简单报表开发,是快速上手的好文档。相信哥。
SSRS-查询条件为空,查询所有数据,否者查询符合条件的数据 解决办法
非常详细的一个SSRS文档,强烈推荐!!! MS SQL Server报表服务入门文档 一、安装报表服务 二、报表服务配置管理器 三、创建报表 1. 使用报表向导新建报表 2. 使用一般方法创建报表 3. 创建报表模型项目 a. ...
ssrs-net 一个 SSRS 客户端,用于使用处理程序和 MVC 操作结果显示报告
在本机可以浏览报表服务器中的报表,部署在iis中访问出现如下问题:为用户“NT AUTHORITY\NETWORK SERVICE”授予的权限不足,无法执行此操作
SQL Server Reporting_Service报表集成解决方案
ssis,ssrs,ssas-6年使用笔记近期整理成册,适合新-初级BI技术和数据分析人员。全实战经验记录从技术选型到如何搭建企业数据平台bi。内容见目录: 开发方案选择 九大数据仓库方案特点 数据仓库方案选择 开发环境...
Angular SQL Server报表查看器(ngx-ssrs-reportviewer) ···· :information: 描述创建该库是为了使用户能够在Angular应用程序中显示SQL Server Reporting Services(SSRS)报告。 报表查看器简化了通过URL请求...
这个 .Net 网站的目标是在没有任何提示的情况下将 SSRS 2008 报告显示为带有 sql 报告特定凭据的报告控件。 总之,这是一种从 .Net 以外的其他语言以匿名方式调用报告的简单方法
SQL Server Reporting Services 2008 (SSRS 2008)是基于服务器(Server-based)的企业级报表平台,其中包含的开发以及管理元件都是为了提供报表生命周期各阶段所需的功能与服务。
SSRS的BI报表服务 SSRS的BI报表服务
SSRS2005报表服务入门文档
SSRS报表研究,集成程序进入报表服务中。
SSRS使用分组Group属性实现基于父子递归关系的汇总报表。 具体代码,完整的可执行的报表项目,详尽的说明文档。 还有其他小技巧,后续持续更新。
SSRS 报表作为微软 BI 体系中重要的前端展现工具无论从难度上和实用性上来看,都是优选的入门课程。
在国外网站上找到的,支持SQL2005报表批量导入到报表管理器的工具。可支持导入.rdl报表文件批量导入。