KearneyKang 发表于 2020-5-29 18:18:08

Web端设计器设计的报表,在JSviewer中展示主题丢失

本帖最后由 KearneyKang 于 2021-12-17 12:13 编辑

ActiveReports现在拥有Web端报表设计器和桌面端报表设计器。Web端设计的报表和桌面端设计的报表都是一个.Rdlx的报表文件。

由于ActiveReports的Web端报表设计器拥有报表的主题选项,在设计报表时报表就自带有报表主题,但是桌面端报表设计器暂时没有主题选择,因此会存在在Web端设计的报表在桌面端展示的时候效果不一致。这个暂时乜办法解决,但是我们可以解决在自己新建的项目中使用Web端报表设计器展示效果不一致的问题。

Web端报表设计器的主题选择:

报表设计样式,使用默认的主题:Cordial.default.rdlx-theme

Web端报表设计器展示的最终样式:

在JSviewer项目中展示的样式

现在展示的结果跟Web端展示的结果不一致,这是由于新建的JSviewer的项目中没有引用对应主题
现在我们引用对应的主题:Cordial.default.rdlx-theme
主题文件在Web端报设计器的源文件中有,使用什么主题就放什么主题文件
跟报表文件放在同一路径下,并设置为"复制":

预览结果


如果你的项目中的Startup.cs的文件使用了“UseCustomStore”进行报表自定义的一些设置,你需要自己的单独进行一个配置,保证主题样式能够被找到,不然那就会丢失主题。


using GrapeCity.ActiveReports;
using GrapeCity.ActiveReports.Aspnet.Viewer;
using Microsoft.Owin;
using Owin;
using System;
using System.IO;
using System.Reflection;
using System.Web;
using System.Web.Routing;



namespace JSViewerMVCApplication1
{

    public class Startup
    {
      public static string EmbeddedReportsPrefix = "JSViewerMVCApplication5.Reports";
      private static readonly DirectoryInfo ResourcesRootDirectory =
            new DirectoryInfo(String.Format(@"{0}.\Reports\", HttpRuntime.AppDomainAppPath)); //主题文件的访问路径;
      public object GetReport(string P)//获取报表名称
      {


            PageReport rep = new PageReport();
            string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");
            rep.Load(new FileInfo(@"" + path + "Reports/" + P));
            return rep.Report;
      }
      public void Configuration(IAppBuilder app)
      {
            app.UseErrorPage();
            app.UseReporting(config => config.UseFileStore(ResourcesRootDirectory));//文件路径配置
            app.UseReporting(settings =>
            {
                settings.UseCustomStore(GetReport);//使用该方法可以自定义进行属性的设置和调用
                settings.UseCompression = true;
            });

            RouteTable.Routes.RouteExistingFiles = true;
      }
    }
}

页: [1]
查看完整版本: Web端设计器设计的报表,在JSviewer中展示主题丢失