当前位置: 首页 > 编程日记 > 正文

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(31)-MVC使用RDL报表

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(31)-MVC使用RDL报表

这次我们来演示MVC3怎么显示RDL报表,坑爹的微软把MVC升级到5都木有良好的支持报表,让MVC在某些领域趋于短板

我们只能通过一些方式来使用rdl报表。

Razor视图不支持asp.net服务器控件,但是aspx可以,所以用户其实可以通过aspx视图模版来显示rdl报表或者水晶报表。

我是有强迫症的人,我不喜欢在众多razor视图中,让aspx视图鹤立鸡群,所以这节主要是演示rdl在MVC中其中一种用法。

报表都有相似性  数据源-数据集-图表-表组成

在MVC项目中新建一个数据源,这个数据源最后将由数据表、TableAdapter、查询、关系组成,新建后可以点击右键查看。

这里我们用到TableAdapter来演示,首先新建一张表

CREATE TABLE [dbo].[SysSample]([Id] [varchar](50) NOT NULL,[Name] [varchar](50) NULL,[Age] [int] NULL,[Bir] [datetime] NULL,[Photo] [varchar](50) NULL,[Note] [text] NULL,[CreateTime] [datetime] NULL,CONSTRAINT [PK__SysSampl__3214EC075AEE82B9] PRIMARY KEY CLUSTERED 
([Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GO
SysSample

并录入一些测试数据

INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('1','张三',18,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('11','张三',18,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('2','李四',21,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('22','李四',21,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('3','王五',33,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('33','王五',33,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('4','柳六',24,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('44','柳六',24,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('5','X七',65,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
INSERT INTO [SysSample] ([Id],[Name],[Age],[Bir],[Photo],[Note],[CreateTime]) values ('55','X七',65,'10  1 1991 12:00AM',NULL,NULL,'01  1 2013 12:00AM')
Test Data

一、创建数据源

二、选择您的数据链接,如果你有链接数据库的直接选择即可

三、新建一个链接,最后它会在web.config生成一个节点

<add name="AppDBConnectionString" connectionString="Data Source=.;Initial Catalog=AppDB;User ID=sa;Password=zhaoyun123!@#;MultipleActiveResultSets=True;Application Name=EntityFramework"
providerName="System.Data.SqlClient" />

四、配置向导

有多种方式供用户选择。我这里方便的使用了sql语句

输入select * from SysSample一条查询语句,接下来全勾上,每个勾都写得很清楚

数据集已经创建完毕

五、创建RDL

新建一个文件夹。专门来存放rdl -----> Reports

在Reports下创建SysSampleReport.rdlc文件

六、为报表创建数据集,数据源选择我们刚刚创建的AppDBDataSet数据源

七、随便添加一个图标常用的饼图和列表(老实说过如果不懂先右键)

上面说的都是创建报表的基础。我们早在asp.net页面已经熟悉了,回到Controller

添加以下方法(type = PDF,Excel,Word )

public ActionResult Reporting(string type = "PDF", string queryStr = "", int rows = 0, int page = 1){//选择了导出全部if (rows == 0 && page == 0){rows = 9999999;page = 1;}GridPager pager = new GridPager(){rows = rows,page = page,sort="Id",order="desc"};List<SysSampleModel> ds = m_BLL.GetList(ref pager, queryStr);LocalReport localReport = new LocalReport();localReport.ReportPath = Server.MapPath("~/Reports/SysSampleReport.rdlc");ReportDataSource reportDataSource = new ReportDataSource("DataSet1", ds);localReport.DataSources.Add(reportDataSource);string reportType = type;string mimeType;string encoding;string fileNameExtension;string deviceInfo ="<DeviceInfo>" +"<OutPutFormat>" + type + "</OutPutFormat>" +"<PageWidth>11in</PageWidth>" +"<PageHeight>11in</PageHeight>" +"<MarginTop>0.5in</MarginTop>" +"<MarginLeft>1in</MarginLeft>" +"<MarginRight>1in</MarginRight>" +"<MarginBottom>0.5in</MarginBottom>" +"</DeviceInfo>";Warning[] warnings;string[] streams;byte[] renderedBytes;renderedBytes = localReport.Render(reportType,deviceInfo,out mimeType,out encoding,out fileNameExtension,out streams,out warnings);return File(renderedBytes, mimeType);}

所以呢。没有传说的那么神秘,靠输出来制作报表

  • List<SysSampleModel> ds把读取到的列表赋予给ds
  • localReport.ReportPath指定报表的路径
  • ReportDataSource reportDataSource = new ReportDataSource("DataSet1", ds);指定数据集 DataSet1

填充好数据集,最后的前端就是调用 Reporting这个方法

在谷歌浏览器输出PDF可以直接在网页预览,如果是其他格式将获得保存对话框弹出

右键选择打印可以接本地打印机

相关文章:

18段代码带你玩转18个机器学习必备交互工具

&#xff08;图片有AI科技大本营付费下载自视觉中国&#xff09;作者 | 曼纽尔阿米纳特吉&#xff08;Manuel Amunategui&#xff09;、迈赫迪洛佩伊&#xff08;Mehdi Roopaei&#xff09;来源 | 大数据&#xff08;ID&#xff1a;hzdashuju&#xff09;【导读】本文简要介绍将…

激活函数之ReLU/softplus介绍及C++实现

softplus函数(softplus function)&#xff1a;ζ(x)ln(1exp(x)).softplus函数可以用来产生正态分布的β和σ参数&#xff0c;因为它的范围是(0,∞)。当处理包含sigmoid函数的表达式时它也经常出现。softplus函数名字来源于它是另外一个函数的平滑(或”软化”)形式&#xff0c;这…

windows server 2012 用sysdba登录报错 ORA-01031

报错显示&#xff1a;C:\Users\Administrator>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 24 09:09:33 2019 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR:ORA-01031: 权限不足 请输入用户名: 1、查看本地用户和组确认权…

[SignalR]初步认识以及安装

原文:[SignalR]初步认识以及安装1.什么是ASP.NET SignalR&#xff1f; ASP .NET SignalR是一个 ASP .NET 下的类库&#xff0c;可以在ASP .NET 的Web项目中实现实时通信。什么是实时通信的Web呢&#xff1f;就是让客户端&#xff08;Web页面&#xff09;和服务器端可以互相通知…

CUDA Samples:Vector Add

以下CUDA sample是分别用C和CUDA实现的两向量相加操作&#xff0c;参考CUDA 8.0中的sample:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\0_Simple&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;各个文件内容如下&#xff1a;common.hpp:#ifndef FBC_CU…

你和人工智能的对话,正在被人工收听

&#xff08;图片有AI科技大本营付费下载自视觉中国&#xff09;作者 | 周晶晶编辑 | 阿伦来源 | 燃财经&#xff08;ID:rancaijing&#xff09;如今&#xff0c;智能设备越来越多地出现在每个人的生活中&#xff0c;在享受它们带来的便利时&#xff0c;很多人或许没有意识到&a…

python数据结构与算法总结

python常用的数据结构与算法就分享到此处&#xff0c;本月涉及数据结构与算法的内容有如下文章&#xff1a; 《数据结构和算法对python意味着什么&#xff1f;》 《顺序表数据结构在python中的应用》 《python实现单向链表数据结构及其基本方法》 《python实现单向循环链表数据…

自定义classloader中的接口调用

2019独角兽企业重金招聘Python工程师标准>>> 注意其中转型异常的描述&#xff0c;左边声明和强转括号内都是appclassloader加载的&#xff0c;而让自定义加载类的接口也由appclassloader加载&#xff0c;所以转型成功 转载于:https://my.oschina.net/heatonn1/blog/…

学点基本功:机器学习常用损失函数小结

&#xff08;图片付费下载自视觉中国&#xff09;作者 | 王桂波转载自知乎用户王桂波【导读】机器学习中的监督学习本质上是给定一系列训练样本 &#xff0c;尝试学习 的映射关系&#xff0c;使得给定一个 &#xff0c;即便这个不在训练样本中&#xff0c;也能够得到尽量接近…

python生成简单的FTP弱口令扫描

2019独角兽企业重金招聘Python工程师标准>>> 前言 Ftp这个类实现了Ftp客户端的大多数功能,比如连接Ftp服务器、查看服务器中的文件、上传、下载文件等功能,Ftp匿名扫描器的实现&#xff0c;需要使用FTP这个类,首先用主机名构造了一个Ftp对象(即ftp),然后用这个ftp调…

C++中const指针用法汇总

这里以int类型为例&#xff0c;进行说明&#xff0c;在C中const是类型修饰符&#xff1a;int a; 定义一个普通的int类型变量a&#xff0c;可对此变量的值进行修改。const int a 3;与 int const a 3; 这两条语句都是有效的code&#xff0c;并且是等价的&#xff0c;说明a是一个…

mongodb基础应用

一些概念 一个mongod服务可以有建立多个数据库&#xff0c;每个数据库可以有多张表&#xff0c;这里的表名叫collection&#xff0c;每个collection可以存放多个文档&#xff08;document&#xff09;&#xff0c;每个文档都以BSON&#xff08;binary json&#xff09;的形式存…

【leetcode】1030. Matrix Cells in Distance Order

题目如下&#xff1a; We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 < r < R and 0 < c < C. Additionally, we are given a cell in that matrix with coordinates (r0, c0). Return the coordinates of…

深度学习面临天花板,亟需更可信、可靠、安全的第三代AI技术|AI ProCon 2019

整理 | 夕颜 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 在人工智能领域中&#xff0c;深度学习掀起了最近一次浪潮&#xff0c;但在实践和应用中也面临着诸多挑战&#xff0c;特别是关系到人的生命&#xff0c;如医疗、自动驾驶等领域场景时&#xff0c;黑盒…

java robot类自动截屏

直接上代码:package robot;import java.awt.Rectangle;import java.awt.Robot;import java.awt.event.InputEvent;import java.awt.p_w_picpath.BufferedImage;import java.io.File;import java.io.IOException;import javax.p_w_picpathio.ImageIO;import com.sun.glass.event…

激活函数之softmax介绍及C++实现

下溢(underflow)&#xff1a;当接近零的数被四舍五入为零时发生下溢。许多函数在其参数为零而不是一个很小的正数时才会表现出质的不同。例如&#xff0c;我们通常要避免被零除或避免取零的对数。上溢(overflow)&#xff1a;当大量级的数被近似为∞或-∞时发生上溢。进一步的运…

parsing:NLP之chart parser句法分析器

已迁移到我新博客,阅读体验更佳parsing:NLP之chart parser句法分析器 完整代码实现放在我的github上:click me 一、任务要求 实现一个基于简单英语语法的chart句法分析器。二、技术路线 采用自底向上的句法分析方法&#xff0c;简单的自底向上句法分析效率不高&#xff0c;常常…

图解Python算法

普通程序员&#xff0c;不学算法&#xff0c;也可以成为大神吗&#xff1f;对不起&#xff0c;这个&#xff0c;绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗&#xff1f;就一直当普通程序员吗&#xff1f;如果有一本算法书&#xff0c;看着很轻松……又有…

详解SSH框架的原理和优点

Struts的原理和优点. Struts工作原理 MVC即Model-View-Controller的缩写&#xff0c;是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合&#xff0c;以及让视图层更富于变化。MVC的工作原理,如下图1所示&#xff1a;Struts 是MVC的一种实现&#xff0…

Numpy and Matplotlib

Numpy介绍 编辑 一个用python实现的科学计算&#xff0c;包括&#xff1a;1、一个强大的N维数组对象Array&#xff1b;2、比较成熟的&#xff08;广播&#xff09;函数库&#xff1b;3、用于整合C/C和Fortran代码的工具包&#xff1b;4、实用的线性代数、傅里叶变换和随机数生成…

梯度下降法简介

条件数表征函数相对于输入的微小变化而变化的快慢程度。输入被轻微扰动而迅速改变的函数对于科学计算来说可能是有问题的&#xff0c;因为输入中的舍入误差可能导致输出的巨大变化。大多数深度学习算法都涉及某种形式的优化。优化指的是改变x以最小化或最大化某个函数f(x)的任务…

微软亚研院CV大佬代季峰跳槽商汤为哪般?

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;近日&#xff0c;知乎上一篇离开关于MSRA&#xff08;微软亚洲研究院&#xff09;和MSRA CV未来发展的帖子讨论热度颇高&#xff0c;这个帖子以MSRA CV执行研究主任代季峰离职加入商汤为引子&#xff0c;引…

iOS Block实现探究

2019独角兽企业重金招聘Python工程师标准>>> 使用clang的rewrite-objc filename 可以将有block的c代码转换成cpp代码。从中可以看到block的实现。 #include <stdio.h> int main() {void (^blk)(void) ^{printf("Block\n");};blk();return 0; } 使…

CUDA Samples: Long Vector Add

以下CUDA sample是分别用C和CUDA实现的两个非常大的向量相加操作&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;各个文件内容如下&#xff1a;common.hpp:#ifndef FBC_CUDA_TEST_COMMON_HPP_ #define FBC_CUDA_TEST_COMMON_HPP_#include<random>template&l…

TensorFlow2.0正式版发布,极简安装TF2.0(CPUGPU)教程

作者 | 小宋是呢转载自CSDN博客【导读】TensorFlow 2.0&#xff0c;昨天凌晨&#xff0c;正式放出了2.0版本。不少网友表示&#xff0c;TensorFlow 2.0比PyTorch更好用&#xff0c;已经准备全面转向这个新升级的深度学习框架了。本篇文章就带领大家用最简单地方式安装TF2.0正式…

javascript全栈开发实践-准备

目标&#xff1a; 我们将会通过一些列教程&#xff0c;在只使用JavaScript开发的情况下&#xff0c;实现一个手写笔记应用。该应用具有以下特点&#xff1a; 全平台&#xff0c;有手机客户端&#xff08;Android/iOS&#xff09;&#xff0c;Windows&#xff0c;macOS&#xff…

POJ 1017 Packets 贪心 模拟

一步一步模拟&#xff0c;做这种题好累 先放大的的&#xff0c;然后记录剩下的空位有多少&#xff0c;塞1*1和2*2的进去 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cstdlib> #incl…

NLP被英语统治?打破成见,英语不应是「自然语言」同义词

&#xff08;图片付费下载自视觉中国&#xff09;作者 | Emily M. Bender译者 | 陆离责编 | 夕颜出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09; 【导读】在NLP领域&#xff0c;多资源语言以英语、汉语&#xff08;普通话&#xff09;、阿拉伯语和法语为代表&#…

CUDA Samples: Dot Product

以下CUDA sample是分别用C和CUDA实现的两个非常大的向量实现点积操作&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;各个文件内容如下&#xff1a;common.hpp:#ifndef FBC_CUDA_TEST_COMMON_HPP_ #define FBC_CUDA_TEST_COMMON_HPP_#include<random>templa…

element ui只输入数字校验

注意&#xff1a;圈起来的两个地方&#xff0c;刚开始忘记写typenumber了&#xff0c;导致可以输入‘123abc’这样的&#xff0c;之后加上了就OK了 转载于:https://www.cnblogs.com/samsara-yx/p/10774270.html