提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:杨鹏连|2021-06-30 15:55:37.237|阅读 117 次
概述:本文将介绍在MonoDevelop中创建Web应用程序并在其中使用在线设计器的方法。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
随着现代技术的高速发展,相关产业所衍生出来的数据集是越来越庞大。那么我们如何能够简单、方便、快捷的展现自己输入数据?并且能够以我们想要的方式展现出来?报表——这一产物便应运而生,现在市面上流行的报表工具类产品也是层出不穷。
我们为什么使用第三方报报表开发工具,而不使用Excel呢?
Excel是一个电子表格程序,而不是一个数据库程序。Excel数据处理容量和速度有限制,数据可视化程度不高,都是以表格为主,虽然也能插入一些图表,但是灵活度和美观度不够,设置起来也相当麻烦,并且数据获取麻烦。
第三方报表工具是数据库存储,数据库程序通常可以存放的数据量是相当大的,可以处理非常复杂的数据结构关系。报表数据交互也快捷方便,速度也非常快,可视化交互渲染。
本文将介绍在MonoDevelop中创建Web应用程序并在其中使用在线设计器的方法。除了online designer这样的按钮,如下载报表给designer并将报表保存到本地计算机将位于页面上 让我们创建一个ASP .Net MVC项目:
我们需要在References中为项目添加库: FastReport Mono,FastReport.Web,System.Net.Http。解压缩归档文件并将WebReportDesigner文件夹添加到项目根目录。
我们还需要一个文件夹,我们将在其中保存报表,存储包含数据的文件。将App_Data文件夹添加到项目根目录。我们将使用FastReport.Mono交付的演示报表,因此我们需要nwind.xml数据库。将其添加到App_Data文件夹。
现在可以开始编程了。在Controller文件夹中是HomeController.cs文件,在使用部分,我们需要库:
Web方法索引:
以前,我们创建了一个可在类中访问的Web报表对象。在Index()方法中,我们在开始时设置WebReport对象的大小 - 高度和宽度为100%。之后我们创建一个数据集。然后我们加载到xml数据库中。我们在报表中注册了数据源。我们检查报表模板文件是否存在,如果成功,则将其加载到报表对象中。 接下来是Web报表对象的设置。打开报表编辑模式,可以显示在线设计器。然后,指定设计器页面的路径。在下一步中,我们设置一个视图以在保存报表时显示回调。最后一个设置是报表对象的标识符。我们将来需要这个用于View。
使用ViewBag,我们将报表对象传递给视图。 除了报表设计器之外,该页面还包含用于将报表下载到设计器并将编辑后的报表保存到本地计算机的按钮。 为这些按钮编写Web方法。首先将报表上传到服务器:
现在报表下载方法到本地计算机:
tmp.frx报表文件的路径在文件参数中指定。您注意到在上一个方法中我们将报表保存为report.frx。但report.frx是已加载报表模板的文件,我们的目标是编辑报表,并以不同的名称保存。因此,我们需要另一种方法 - 保存已编辑报表的方法。我们将创建自己的事件处理程序,用于按下在线设计器中的报表保存按钮:
在第一行中,我们会显示一条消息,确认保存报表。然后,我们检查报表标识符,如果它等于“DesignReport”,那么我们将结果发送到流。并基于此流创建新的报表模板文件。 对于此方法,我们需要创建一个视图。右键单击方法签名并创建一个新视图(创建视图):
在“View”代码中,只需显示消息:
因此,第二个文件将出现在主文件夹 - SaveDesignedReport.cshtml中。 在Index()方法中,指定了web报表属性,webReport.DesignerSaveCallBack =“Home / SaveDesignedReport”。如果不知道将调用哪个视图来显示保存报表的回调,则可以设置此属性的值。 现在编写Index.cshtml视图:
在这里,我们显示标题。并使用BeginForm帮助程序创建一个带有文件上载字段和按钮的表单。作为参数,此帮助程序接受来自控制器的Web方法的名称,控制器的名称,请求的类型,数据的编码方式。 在HomeController中创建了两个方法:将报表下载到设计器并将报表下载到本地计算机。帮助程序创建的表单中的Web方法的名称必须与控制器中的名称匹配。 还创建了一个带有按钮的表单,用于将报表从服务器下载到本地计算机。在最后一行代码中,我们将报表转换为HTML格式并显示它。为此,请使用内置方法GetHtml(),这会导致将构造的报表导出为此格式(在我们的示例中为设计器)。 在_Layout.cshtml页面的主文件中,您需要连接FastReport脚本:
项目中有两个Web配置。在ASP.Net项目中,web.config仅适用于它所在的目录以及所有子目录。因此,位于Views目录中的Web.config专门用于视图。打开它并在Namspaces部分添加几行:
第二个Web.config位于项目的根目录,这意味着它配置整个应用程序。我们将为其添加一个处理程序,以便将Web报表对象导出为Html格式:
如果web.config中没有和部分,则添加它们。 在此步骤中,我们可以将其视为我们的小型Web应用程序。我们在xsp调试Web服务器上运行它。只需按Ctrl + F5键即可。
由于
,出现了Browse ...按钮和带有文件名的标签。单击此按钮并选择报表模板文件。
标签现在显示文件名。单击“Upload”按钮:
该报表将上传至设计人员。现在我们可以对报表模板进行必要的更改。然后转到“Report”选项卡并单击“save”图标:
报表已准备好下载,因此请单击“下载设计报表”按钮。将出现一个标准浏览器对话框,我们可以在其中下载报表或拒绝操作。下载报表并在下载文件夹中找到它。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.UI;
using System.Text;
using System.IO;
using FastReport;
using FastReport.Web;
using FastReport.Utils;
using System.Web.UI.WebControls;
using FastReport.Export.Html;
using FastReport.Data;
using System.Net.Http.Headers;
using FastReport.Export.Image;
using System.Net.Http;
private WebReport webReport = new WebReport(); // Web report object
public ActionResult Index()
{
webReport.Width = Unit.Percentage(100);
webReport.Height = Unit.Percentage(100);
System.Data.DataSet dataSet = new System.Data.DataSet();
dataSet.ReadXml("App_Data/nwind.xml"); // Read database
webReport.Report.RegisterData(dataSet, "NorthWind"); // Register data in the report
if (System.IO.File.Exists("App_Data/report.frx"))
{
webReport.Report.Load("App_Data/report.frx");
}
webReport.DesignReport = true;
webReport.DesignerPath = "WebReportDesigner/index.html";
webReport.DesignerSaveCallBack = "Home/SaveDesignedReport";
webReport.ID = "DesignReport";
ViewBag.WebReport = webReport; // Pass the report to View
return View();
}
[HttpPost] // The attribute indicates that the method processes the Post request.
public ActionResult Upload(HttpPostedFileBase upload)
{
if (upload != null)
{
// Save the file on the server
upload.SaveAs("App_Data/report.frx");
}
return RedirectToAction("Index"); // Call web index method
}
public FileResult GetFile()
{
return File("App_Data/tmp.frx", "application/octet-stream", "tmp.frx");
}
[HttpPost]
// call-back for save the designed report
public ActionResult SaveDesignedReport(string reportID, string reportUUID)
{
ViewBag.Message = String.Format("Confirmed {0} {1}", reportID, reportUUID);
if (reportID == "DesignReport")
{
Stream reportForSave = Request.InputStream;
string pathToSave = "App_Data/tmp.frx";
using (FileStream file = new FileStream(pathToSave, FileMode.Create))
{
reportForSave.CopyTo(file);
}
}
return View();
}
<h2>@ViewBag.Message</h2>
@{
ViewBag.Title = "Home Page";
}
<h3>Select file</h3>
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="upload" />
<input type="submit" value="Upload" />
}
@using (Html.BeginForm("GetFile", "Home", FormMethod.Get))
{
<input id="dwn" type="submit" value="Download designed report" />
}
@ViewBag.WebReport.GetHtml()
<head>
…
@WebReportGlobals.Scripts()
@WebReportGlobals.Styles()
</head>
<system.webServer>
<namespaces>
…
<add namespace="FastReport" />
<add namespace="FastReport.Web" />
</namespaces>
<system.webServer>
<handlers>
…
<add name="FastReportHandler" path="FastReport.Export.axd" verb="*" type="FastReport.Web.Handlers.WebExport"/>
</handlers>
</system.webServer>
<input type =“file”name =“upload”/>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢