MVC架构 使用FastReport
1.Web.config文件
添加配置
<httpHandlers>
<add path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/>
</httpHandlers>
2.在包含views的文件夹中webconfig中加入以下信息:引用命名空间
<add namespace="FastReport"/>
<add namespace="FastReport.Web"/>
3.在_Layout.cshtml文件中<head>加入
@WebReportGlobals.Scripts()
@WebReportGlobals.Styles()
4.在view视图中加入
@ViewBag.WebReport.GetHtml()
5.后台
//数据库中读取报表,并加载数据和报表
public void ReadBlob(int idData, DataSet dataSet)
{
OracleConnection conn = new OracleConnection();
string connString = "Data Source= (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.5.86.45)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ORCL)));User ID=DWMP;Password=DWMP;Persist Security Info=True";
using (conn = new OracleConnection(connString))
{
try
{
conn.Open();
OracleCommand cmd = conn.CreateCommand();
// 利用事务处理(必须)
OracleTransaction transaction = cmd.Connection.BeginTransaction();
cmd.Transaction = transaction;
// 获得 OracleLob 指针
string sql = "select REPORTDATA from BASE_FORMPRINT where id= " + idData;
cmd.CommandText = sql;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
//读取内存流
MemoryStream ms = new MemoryStream((byte[])dr["REPORTDATA"]); WebReport report = new WebReport();//创建报表对象
report.Width = ;
report.Height = ;
report.Report.Load(ms);//加载内存流
report.Report.RegisterData(dataSet);//传递数据
ViewBag.WebReport = report;//赋值报表给页面
ms.Dispose();
report.Dispose();
cmd.Parameters.Clear();
// 提交事务
transaction.Commit();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
}
//动作:打印预览
// GET: /Print/PrintDetail
public ActionResult PrintDetail(int reportid, int opersheetid)
{
ViewBag.Message = "PrintDetail";
DataSet dataSet = getDataSet(reportid,opersheetid);//获得数据集
ReadBlob(reportid, dataSet);//加载报表
return View();
} //获得单据数据集
private DataSet getDataSet(int reportid,int opersheetid)
{
DataSet dataSet = new DataSet();
string getViewName = "select * from base_formprint where id=" + reportid;
DataTable dt=DbHelperOra.Query(getViewName).Tables[];
string sheetView=dt.Rows[]["sheetdataset"].ToString();
string detailView = dt.Rows[]["detaildataset"].ToString();
string checkView = dt.Rows[]["aduitdataset"].ToString();
if (!String.IsNullOrEmpty(sheetView))
{
string sqlSheet = "select * from " + sheetView + " where id=" + opersheetid;//单据信息
DataTable dt1 = DbHelperOra.Query(sqlSheet).Tables[];
dt1.TableName = sheetView;
dataSet.Tables.Add(dt1.Copy());
} if (!String.IsNullOrEmpty(detailView))
{
string sqlDetail = "select * from " + detailView + " where sheetid=" + opersheetid;//明细信息
DataTable dt2 = DbHelperOra.Query(sqlDetail).Tables[];
dt2.TableName = detailView;
dataSet.Tables.Add(dt2.Copy());
} if (!String.IsNullOrEmpty(checkView))
{
string sqlCheck = "select * from " + checkView + " where id=" + opersheetid;//审核
DataTable dt3 = DbHelperOra.Query(sqlCheck).Tables[];
dt3.TableName = checkView;
dataSet.Tables.Add(dt3.Copy());
}
return dataSet;
}
MVC架构 使用FastReport的更多相关文章
- 【JAVA】基于MVC架构Java技术荟萃案例演练
基于JAVA-MVC技术的顾客管理项目案例总结 作者 白宁超 2016年6月9日22:47:08 阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servle ...
- Android 四大组件 与 MVC 架构模式
作为一个刚从JAVA转过来的Android程序员总会思考android MVC是什么样的? 首先,我们必须得说Android追寻着MVC架构,那就得先说一下MVC是个啥东西! 总体而来说MVC不能说是 ...
- MVC架构模式分析与设计(一)---简单的mvc架构
首先 我要感谢慕课网的老师提供视频资料 http://www.imooc.com/learn/69 下面我来进行笔记 我们制作一个简单的mvc架构 制作第一个控制器 testController.cl ...
- IntelliMVCCode智能MVC架构的代码助手使用方法
智能代码生成工具,快速帮助开发者提升开发速度,通过工具自动生成MVC架构的大量源代码,节省更多的开发时间. 工具使用的框架:.net4.0,通过工具连接到数据库自动提取数据表或视图中的结构,生成对应的 ...
- 从MVC框架看MVC架构的设计
尽管MVC早已不是什么新鲜话题了,但是从近些年一些优秀MVC框架的设计上,我们还是会发现MVC在架构设计上的一些新亮点.本文将对传统MVC架构中的一些弊病进行解读,了解一些优秀MVC框架是如何化解这些 ...
- 【PHP小项目使用MVC架构】
小项目名称是雇员管理系统. mvc是一种项目的开发模式,中文名称为模式视图控制器,是强制程序员将数据的输入.处理.输出分开的一种开发模式. 在这个小项目中,控制器使用service作为后缀名. 项目u ...
- 一个初学者对于MVC架构的理解
我很早之前就开始接触.NET开发,一直都在2.0的框架下,所以对于MVC这种架构,听说过,但没有具体使用过,近期和外部朋友接触时,有了解到他们公司在使用MVC这种架构,所以自己就找来相关资料了解一下M ...
- java MVC架构-spring mvc,struct2(理解)
MVC架构实现基础: 基于filter或者servlet实现请求地址分析,如果需要控制类处理请求,则调用相应的控制类.调用控制类时,根据配置文件初始化控制类相关的参数.数据库连接可持久化存在.控制类处 ...
- 【深入Cocos2d-x】使用MVC架构搭建游戏Four
喜欢Four这个项目,就赶快在GitHub上Star这个项目吧! 喜欢我的文章,来微博关注我吧:王选易在学C艹 点我下载 项目起源 项目Logo: 下面是该游戏的项目地址,各位想参考源代码的同学可以到 ...
随机推荐
- PHP获取某个表与其他表的关联关系算法
如图 电影movie有多个附表,如果通过movie表来找出多个与之关联的表. 本算法规则: 外键写法必须是X_id; A与B 1对多关系,中间表表名必须是A_B,且A_B,必须包含A_id,B_id外 ...
- vue.js在windows本地下搭建环境和创建项目
Vue.js是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vu ...
- rhel 7.0 配置centos yum源(2016/12/8),成功!
1.首先查看redhat 7.0系统本身所安装的那些yum 软件包: rpm -qa | grep yum #列出所有已安装的yum包 2.删除这些包: rpm -e *.rpm --nodeps # ...
- H5音频和视频
使用媒体标签最大的缺点在于缺少编解码器的支持一.浏览器支持性检测检测浏览器是否支持audio元素或video元素最简单的方式就是用脚本动态创建它,然后检测特定函数是否存在 var hasVideo=! ...
- 使用flume-ng聚合双活Nginx日志
前不久使用Keepalived搭建了Nginx双活代理服务器,以达到一个公网IP后支持多个云主机的多个域名网站的目的.完成后又想在这双活的Nginx上有所有访问网站的日志,之前有了解过Google A ...
- HDU5870 Alice's Adventure in Wonderland
大概做法是这样的 考虑最朴素的做法,预处理出1到所有点的最短路数组dis1和方案数数组cnt1,和预处理出n到所有点的最短路数组dis2和方案数数组出cnt2,然后暴力枚举点对(A,B),如果A和B之 ...
- android 设计
引用:http://my.eoe.cn/blue_rain/archive/3631.html 1.一些概念 模式的定义: 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案 ...
- FORM中需要反复选择LOV
注意:1.字段长度问题 2.提示显示样式:第一条记录 3.那些不现实的返回项,或者是只读的返回项可以 将从列表中验证 改为 否 比如一个LOV 返回2个值 但是其实只用选择前一个就可以带出后一 ...
- 推荐一篇好文:OSG OSGearth vs2010编译
链接:http://weibo.com/p/2304189447a8480102v2c2 此文作者把用到的相关代码包放在:http://pan.baidu.com/s/1qW9a4zU 按照步骤操作完 ...
- 50个常用SQL语句
50个常用SQL语句 Student(S#,Sname,Sage,Ssex) 学生表 S#学号,主键 Course(C#,Cname,T#) 课程表 C#课程号,主键 SC(S#, ...