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: 下面是该游戏的项目地址,各位想参考源代码的同学可以到 ...
随机推荐
- SVN迁项目
next -> 做为新项目检出,finish -> next -> finish -> 否,是
- 寿司点餐系统Sprint1总结
为期十天的一个冲刺,说长不长,说短不短.从一开始的接收课程任务到第一次聚集讨论. 确定方案.实行方案,再到最后的决定结束第一个冲刺,都是大家一起讨论着加小小的默契一步步 向前.没有完美,但是总体完成的 ...
- C# DataTable中根据某Column值(不重复)获取该值所在行
System.Data.DataTable dt = new System.Data.DataTable(); dt.PrimaryKey = new System.Data.DataColumn[] ...
- Dev 关于用openFileDialog控件上传图片的问题
1. OpenFileDialog控件有以下基本属性 InitialDirectory 对话框的初始目录 Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.tx ...
- [原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Windows api实现桌面任务栏隐藏\显示
//隐藏任务栏 HWND hWnd = ::FindWindow(TEXT("Shell_traywnd"),TEXT("")); ::SetWindowPos ...
- NLog路由规则和上下文信息
NLog配置路由规则和上下文信息 rules: 规则节点 logger:一个路由规则 <rules> <!--<logger name="*" writeT ...
- 引用iScroll.js实现上拉和下拖刷新
使用技巧 1.引用iScroll.js, 在初始化时添加两个事件监听:touchMove.DOMContentLoaded. 2.实现iScroll插件的onScrollEnd事件, 也就是在这个事件 ...
- 代码review之 isInfoEnable()
上周没事扫扫系统原来的代码,突然发现这样一段代码: if(log.isInfoEnable()) { log.info("ID"+userID+"pwd"+us ...
- 亲手使用Sencha Touch + phonepag开发Web APP随笔 -- 第一个APP
参考博文: [Phonegap+Sencha Touch] 移动开发1.准备工作 [Phonegap+Sencha Touch] 移动开发2.PhoneGap/Cordova初步使用 经过差不多1 ...