当你使用MVC模板创建自己的Web项目,会出现一个合理的问题 - 如何在其中使用FastReport.Net Web报表?

在这篇文章中,我会为你演示如何做到这一点。

由于在MVC体系结构中,视图与逻辑分离,所以你将无法使用WebReport的可视化组件。我将不得不使用控制器代码中的报表,然后将其转移到视图。例如,在这里我使用了一个标准的MVC Web应用程序。首先,我们将必要的库连接到项目中:

· FastReport.dll;

· FastReport.Web.dll。

你可以在FastReport.Net应用程序的文件夹中找到它们。

我决定在站点的主页上发布一个报表。因此,我们将使用 HomeController.cs 中的报表。

声明库:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FastReport.Web;
using System.Web.UI.WebControls;

要使用 Index () 方法,请添加以下代码:

public ActionResult Index()
{
WebReport webReport = new WebReport(); string report_path = "C:\\Program Files (x86)\\FastReports\\FastReport.Net\\Demos\\Reports\\";
System.Data.DataSet dataSet = new System.Data.DataSet();
dataSet.ReadXml(report_path + "nwind.xml");
webReport.Report.RegisterData(dataSet, "NorthWind");
webReport.Report.Load(report_path + "Simple List.frx");
ViewBag.WebReport = webReport;
return View();
}

我们考量一下细节。在第一行中,我们创建了一个WebReport类的实例。

接下来,创建一个变量来存储包含报表的文件夹的路径。对于该报表所需的数据,我们创建一个数据集并加载xml数据库。

现在您需要使用 RegisterData () 方法在报表对象中注册数据源。我们使用 Load () 方法来加载报表模板。

ViewBag是对象ViewData的一个封装,用于将数据从控制器传输到视图。在这种情况下,我们会将报表传送到视图索引,本质上来讲就是主页。

我们转到演示:

网页代码是:

@{
ViewBag.Title = "Home Page";
}
@ViewBag.WebReport.GetHtml()

我删除了不必要的,留下了一个页面标题,而我们的报表,以HTML格式呈现。

也就是说,要在页面上显示报表,只需添加代码:

@ ViewBag.WebReport.GetHtml()

相应的控制器会发送一个报表给它。

我们需要在视图初始化中添加脚本:

<head>

@WebReportGlobals.Scripts()
@WebReportGlobals.Styles()

</head>

在我们的例子中,文件 _Layout.cshtml:

它仍然只是纠正位于Views文件夹中的Web.config。

我们为网络报表添加命名空间:

<namespaces>

<add namespace="FastReport" />
<add namespace="FastReport.Web" />
</namespaces>

在项目的根目录,还有另一个Web.config。我们往里面添加一个处理句柄:

<handlers>

<add name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/>
</handlers>

运行应用程序并获取报表。

Fastreport.net 如何在开发MVC应用程序时使用报表的更多相关文章

  1. ASP.NET安全[开发ASP.NET MVC应用程序时值得注意的安全问题](转)

    概述 安全在web领域是一个永远都不会过时的话题,今天我们就来看一看一些在开发ASP.NET MVC应用程序时一些值得我们注意的安全问题.本篇主要包括以下几个内容 : 认证 授权 XSS跨站脚本攻击 ...

  2. ASP.NET MVC应用程序展示RDLC报表

    原文:ASP.NET MVC应用程序展示RDLC报表 学习ASP.NET MVC这样久,在学习,练习与应用过程中,觉得很多知识与以前的ASP.NET多有区别,但是实现操作起来,细处又有许多相近的地方. ...

  3. 用Eclipse开发Androd应用程序时,自带虚机模拟器太慢了,怎么办

    问:用Eclipse开发Androd应用程序时,系统自带模拟器太慢了,怎么办? 答:用Genymotin

  4. C# .NET开发图形图像程序时提示"GDI+ 中发生一般性错误"

    今天突然收到一封信,说我那个极度复杂的Marshal的问题被解决了(http://www.cnblogs.com/hotcan/archive/2005/01/12/91007.html).顿时感觉好 ...

  5. 使用 IntelliJ IDEA 开发 Android 应用程序时配置 Allatori 进行代码混淆

    IntelliJ IDEA 提供了非常强大的 Android 开发支持,就连 Google 官方推荐的 Android Studio 其实也是 IntelliJ IDEA 的一个 Android 开发 ...

  6. C#开发MySQL数据库程序时需要注意的几点

    一:引用MySQL使用基于Parameter方式代码,总是提示:“Column '列名'cannot be null”解决 MySQL使用基于Parameter方式代码,总是提示:“Column '列 ...

  7. 在ASP.NET MVC应用程序中随机获取一个字符串

    在开发ASP.NET MVC应用程序时,有可能需要一个随机字符串,作为密码或是验证码等. 如果你需要的是SQL版本,可以参考<密码需要带特殊字符(二)>http://www.cnblogs ...

  8. 马上着手开发Mac应用程序

    你是否想要开发 Mac 应用程序却又不知道从哪里入手?本路线图提供了 Mac 应用程序开发的绝佳起点,即使你已经是一个 iOS 开发专家,本路线图对你依然适用.Apple让开发应用程序和提交应用程序到 ...

  9. 用 Eclipse 开发 Android 应用程序

    转自:http://www.apkbus.com/android-13828-1-1.html 开始之前 本教程介绍如何在 Eclipse 环境中进行 Android 应用程序开发,包括两个示例应用程 ...

随机推荐

  1. 堆栈的应用——用JavaScript描述数据结构

    栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底. 一.实现一个栈类Stack 基于堆栈的特性,可以用数组做线 ...

  2. vue2 学习笔记2

    文中例子代码请参考github 品牌管理案例 添加新品牌 <body> <div id="app"> <div class="panel p ...

  3. Linux:固定 ip

    默认情况下,安装完操作系统时,ip是采用dhcp来动态分配的.通常我们需要将其固定下来. 不然 每次系统重启后,ip都会变动,这样会给日常工作带来不必要的麻烦的. 下面就是在rhel .centos  ...

  4. js获取当前页面url网址信息

    js如何准确获取当前页面url网址信息 在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个 ...

  5. vue 之 .sync 修饰符

    在一些情况下,我们可能会需要对一个 prop (父子组件传递数据的属性) 进行“双向绑定”. 在vue 1.x 中的 .sync 修饰符所提供的功能.当一个子组件改变了一个带 .sync 的prop的 ...

  6. 聚类——WKFCM

    聚类——认识WKFCM算法 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 参考文献:Shen H, Yang J, Wang S, et al. At ...

  7. KFCM算法的matlab程序(用FCM初始化聚类中心)

    KFCM算法的matlab程序(用FCM初始化聚类中心) 在“聚类——KFCM”这篇文章中已经介绍了KFCM算法,现在用matlab程序对iris数据库进行实现,用FCM初始化聚类中心,并求其准确度与 ...

  8. 【Teradata】设置 QUERY_BAND

    SET QUERY_BAND='jobname=chs_instr;' FOR SESSION;

  9. UVA12627-Erratic Expansion(递归)

    Problem UVA12627-Erratic Expansion Accept: 465  Submit: 2487Time Limit: 3000 mSec Problem Descriptio ...

  10. 如何利用pip自动生成和安装requirements.txt依赖

    在查看别人的Python项目时,经常会看到一个requirements.txt文件,里面记录了当前程序的所有依赖包及其精确版本号.这个文件有点类似与Rails的Gemfile.其作用是用来在另一台PC ...