找回密码
 立即注册

QQ登录

只需一步,快速开始

admin 讲师达人认证 悬赏达人认证 活字格认证 SpreadJS 开发认证
管理员   /  发表于:2019-3-8 16:42  /   查看:3899  /  回复:0
概述
ActiveReports Web端在线报表设计器已经正式上线!看到它这么帅气、实用,你是不是也想自己动手创建一个?
现在我们就来教您,如何创建一个简单的 ActiveReports Web端在线报表设计器(文末有示例源码,请大家下载体验),如您想体验ActiveReports 在线报表设计器的全部功能,请登陆 ActiveReports 官网,点击在线报表设计器菜单。
创建步骤
  • 打开VS,然后创建一个 .Net Framework 4.6.2的ASP .NET Empty Web Application的空项目
  • 选中引用,然后右键>> 管理NuGet程序包 >>点击
  • 选择“浏览”,然后在查询框中输入” Nunit”, 点击安装
  • 在查询框中输入“Microsoft ASP.NET MVC”,点击安装,然后选择“我接受”
  • 在查询框中输入“OWIN”,点击安装
  • 在查询框中输入” Microsoft.Owin” ,点击安装,然后选择“我接受”
  • 在查询框中输入“ Microsoft.Owin.Host.SystemWeb”,点击安装,然后选择“我接受”
  • 在查询框中输入“ Microsoft.Owin.StaticFiles”,点击安装,然后选择“我接受”
  • 在查询框中输入“ Microsoft.Owin.FileSystems”,如果显示“已安装”,则跳过此步骤。
  • 添加引用
  • 添加如下引用,引用的具体路径:
    C:\Program Files (x86)\Common Files\GrapeCity\ActiveReports 13
    添加引用如下:
    • GrapeCity.ActiveReports.Aspnet.Viewer
    • GrapeCity.ActiveReports.Aspnet.Designer
    • GrapeCity.ActiveReports.Core.Diagnostics
    • Grapecity.ActiveReports.Core.Rdl

  • 在项目中新添加一个新的文件
  • 在新的 Startup.cs 的代码替换如下代码:

  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using System.Web;
  5. using GrapeCity.ActiveReports.Aspnet.Designer;
  6. using Owin;
  7. using Microsoft.Owin;
  8. using Microsoft.Owin.StaticFiles;
  9. using Microsoft.Owin.FileSystems;
  10. using System.Web.Mvc;
  11. using System.Web.Routing;
  12. [assembly: OwinStartup(typeof(AspNetDesignerSample.Startup))]
  13. namespace AspNetDesignerSample
  14. {
  15.    public class Startup
  16.    {
  17.        // resources (reports, themes, images) location
  18.        private static readonly DirectoryInfo ResourcesRootDirectory =
  19.            new DirectoryInfo(String.Format("{0}.\\resources\", HttpRuntime.AppDomainAppPath));
  20.        public void Configuration(IAppBuilder app)
  21.        {
  22.            // web designer middleware
  23.            app.UseDesigner(config => config.UseFileStore(ResourcesRootDirectory));
  24.            // static files middlewares
  25.            var fileSystem = new PhysicalFileSystem(String.Format("{0}.\\wwwroot\", HttpRuntime.AppDomainAppPath));
  26.            app.UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new[] { "index.html" }, FileSystem = fileSystem });
  27.            app.UseStaticFiles(new StaticFileOptions { FileSystem = fileSystem });
  28.        }
  29.    }
  30. }
复制代码
  • 在项目中创造一个’resourse’ 的文件,然后在可以在这个文件里放报表文件、主题、图片。为了方便你可以直接把web在线报表设计器源码里的 ’resourse’整个文件直接赋值粘贴到你当前的项目中,然后把 ’resourse’ 里的所有文件都是全部选择包含在项目中
    源码路径:
    C:\Users\******\Documents\GrapeCitySamples\ActiveReports 13\Web\WebDesigner_MVC
  • 在该路径下C:\Program Files (x86)\GrapeCity\ActiveReports 13\Deployment\WebDesigner folder on 64-bit Windows.
    复制 Web.Config 去替换项目中的已存在的 Web.Config 文件,注意需要移除Web.Config 中的如下配置。


  1. <handlers>
  2. <add name="AllUris" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode" />
  3. </handlers>
复制代码
  • 在项目中新建一个 ’ wwwroot’ 文件,然后再在里面添加如下文件
    • baseServerApi.js
    • web-designer.css
    • web-designer.js
    • vendor
  • 在项目中新添加一个新的 HTMLpage
  • 在项目中打开 index页面,然后修改其内容,如下所示

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.    <title>Web Designer Sample</title>
  5.    <meta charset="utf-8">
  6.    <meta name="viewport" content="width=device-width, initial-scale=1">
  7.    <meta http-equiv="x-ua-compatible" content="ie=edge">
  8.    <!-- designer-related css -->
  9.    <link rel="stylesheet" href="vendor/css/materialdesignicons.min.css" media="all" type="text/css" />
  10.    <link rel="stylesheet" href="vendor/css/bootstrap.min.css" />
  11.    <link rel="stylesheet" href="vendor/css/font-awesome.min.css">
  12.    <link rel="stylesheet" href="vendor/css/ionicons.min.css">
  13.    <link rel="stylesheet" href="vendor/css/fonts-googleapis.css" type="text/css">
  14.    <link rel="stylesheet" href="web-designer.css" />
  15. </head>
  16. <body class="theme-blue">
  17.    <!-- designer-related js -->
  18.    <script src="vendor/js/jquery.min.js"></script>
  19.    <script src="vendor/js/bootstrap.min.js"></script>
  20.    <script src="baseServerApi.js"></script>
  21.    <script src="web-designer.js"></script>
  22.    <!-- designer root div -->
  23.    <div id="designer-id" style="width: 100%; height: 100%;"></div>
  24.    <script>
  25.        // create designer options
  26.        var designerOptions = GrapeCity.ActiveReports.WebDesigner.createDesignerOptions(baseServerApi);
  27.        // render designer application
  28.        GrapeCity.ActiveReports.WebDesigner.renderApplication('designer-id', designerOptions);
  29.    </script>
  30. </body>
  31. </html>
复制代码
  • 最后运行结果:
  • 如果你想打开的编辑界面,不是一个空白的页面,而是一个已经存在的报表。
    首先你需要在index.html的 createDesignerOptions() 的函数后面添加
    designerOptions.reportInfo.id = "MyReport.rdlx";
    "MyReport.rdlx"报表是在项目’resources’中存在的报表文件,不然就会找不到报表路径,显示不出来。
  • 添加 css 文件
    <link rel="stylesheet" href="file-dialog.css" /> <link rel="stylesheet" href="web-designer.css" />
  • 添加 JS 文件
    <link rel="stylesheet" href="file-dialog.css" /> <link rel="stylesheet" href="web-designer.css" />
  • 复制下面的<div>替换 index.html 中原来的<div>



  1. <!-- designer root div -->
  2. < div id="designer-id" style="width: 100%; height: 100%;"></div>
  3. <!-- save as dialog root div -->
  4. < div id="save-as-dialog-id" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: none; z-index: 9999;"></div>
复制代码
替换 index.html中的<Script>中的内容:
  1.   <script>
  2.    var showElement = function (id) {
  3.        if (!id) return;
  4.        ($('#' + id)).css('display', 'block');
  5.    };
  6.    var hideElement = function (id) {
  7.        if (!id) return;
  8.        ($('#' + id)).css('display', 'none');
  9.    };
  10.    var designerId = 'designer-id';
  11.    var saveAsDialogId = 'save-as-dialog-id';
  12.    function onSaveAs(options) {
  13.        showElement(saveAsDialogId);
  14.        // render save-as dialog
  15.        fileDialog.createSaveReportAsDialog(saveAsDialogId, {
  16.            locale: options.locale,
  17.            api: {
  18.                getReportsList: function () {
  19.                    return baseServerApi.getReportsList()
  20.                        .then(function (reportsList) {
  21.                            return reportsList.map(function (reportInfo) {
  22.                                return { path: reportInfo.Name };
  23.                            });
  24.                        });
  25.                },
  26.                saveReport: function (saveOptions) {
  27.                    return baseServerApi.saveNewReport({
  28.                        name: saveOptions.path,
  29.                        content: options.reportInfo.content,
  30.                    }).then(function (saveResult) {
  31.                        return { id: saveResult.Id };
  32.                    });
  33.                },
  34.            },
  35.            reportInfo: {
  36.                path: options.reportInfo.name,
  37.            },
  38.            onSuccess: function (saveResult) {
  39.                hideElement(saveAsDialogId);
  40.                options.onSuccess({ id: saveResult.id, name: saveResult.path });
  41.            },
  42.            onClose: function () {
  43.                hideElement(saveAsDialogId);
  44.            },
  45.        });
  46.    };
  47.    // create designer options
  48.    var designerOptions = GrapeCity.ActiveReports.WebDesigner.createDesignerOptions(baseServerApi);

  49.    designerOptions.reportInfo.id = " MyReport.rdlx";
  50.    // enable showing save-as button
  51.    designerOptions.saveAsButton.visible = true;
  52.    // specify behavior on save-as
  53.    designerOptions.onSaveAs = onSaveAs;
  54.    // render designer application
  55.    GrapeCity.ActiveReports.WebDesigner.renderApplication(designerId, designerOptions);
  56. </script>
复制代码
  • 至此,一个简单的 ActiveReport 在线报表设计器已经创建成功,最终运行结果如下:

ActiveReport 在线报表设计器示例源码

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部