找回密码
 立即注册

QQ登录

只需一步,快速开始

mm-bzu
金牌服务用户   /  发表于:2023-3-20 16:31  /   查看:1946  /  回复:5
1金币
本帖最后由 Felix.Li 于 2023-3-28 09:58 编辑

报表文件和Resources文件夹之间多了一级目录,SDK默认的方法怎么去访问报表文件

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

5 个回复

倒序浏览
Bella.YuanWyn认证
超级版主   /  发表于:2023-3-20 18:30:11
沙发
您好,可以参考下图进行路径的修改:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
mm-bzu
金牌服务用户   /  发表于:2023-3-21 15:17:16
板凳
我们的第二级目录名不固定,需要动态更改,这种情况怎么获取到下面的报表文件
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2023-3-21 15:53:28
地板
mm-bzu 发表于 2023-3-21 15:17
我们的第二级目录名不固定,需要动态更改,这种情况怎么获取到下面的报表文件

那您可以尝试试用动态的变量来获取二级目录名称,然后拼接成最终的地址呢。
回复 使用道具 举报
Quincy
注册会员   /  发表于:2024-10-28 16:15:50
5#
Eden.Sun 发表于 2023-3-21 15:53
那您可以尝试试用动态的变量来获取二级目录名称,然后拼接成最终的地址呢。

需要如何才能动态更改,这个不是在应用启动时就确定的路径吗?
我的代码如下:
  1. private static readonly DirectoryInfo ResourcesRootDirectory =  new DirectoryInfo(Path.Combine(Directory.GetCurrentDirectory(), "Reports/Resources" + Path.DirectorySeparatorChar));

  2. public static IApplicationBuilder UseReport(this IApplicationBuilder app)
  3. {
  4.         //初始化报表配置
  5.         ReportConfiguration.Instance.InitSettings();

  6.         app.UseReportViewer(config => {
  7.                 //报表资源文件
  8.                 config.UseFileStore(ResourcesRootDirectory);
  9.                 config.LocateDataSource = args =>
  10.                 {
  11.                         //数据源类型,需要根据数据源类型返回对应的数据,例如:如果是Json类型,则需要返回Json类型的数据
  12.                         var dataSourceType = args.Report.DataSources[0].ConnectionProperties.DataProvider;

  13.                         var vals = (object[])args.ReportParameters[0].Value;

  14.                         //var settings = ReportConfiguration.GetConfiguration(Regex.Replace(args.Report.Name.Replace(".rdlx",""), @"\d+$", ""));
  15.                         var settings = ReportConfiguration.GetConfiguration(vals[1].ToString());

  16.                         //内置数据源DataTable
  17.                         if (settings != null && "DATASET".Equals(dataSourceType))
  18.                         {
  19.                                 //动态获取数据源服务实例
  20.                                 var serviceProvider = app.ApplicationServices;
  21.                                 var reportServiceFactory = serviceProvider.GetService<IReportServiceFactory>();
  22.                                 var strategy = reportServiceFactory.GetReportService(settings.StrategyType);

  23.                                 if (strategy != null)
  24.                                 {
  25.                                         return strategy.LoadData(args).GetAwaiter().GetResult();
  26.                                 }
  27.                         }

  28.                         // TODO:处理不支持的数据源类型                                       
  29.                         return null;
  30.                 };
  31.         });
  32.         app.UseReportDesigner(config =>
  33.         {
  34.                 config.UseFileStore(ResourcesRootDirectory, null, FileStoreOptions.NestedFoldersLookup);                               
  35.                 //config.UseResourcesProvider();
  36.         });
  37.         return app;
  38. }
复制代码


需要调整哪个位置才能访问报表文件?
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-10-28 18:34:37
6#
这个目录必须确定,如果是动态的,就不能走这个了,需要走customerStore:
https://github.com/activereports ... esigner_CustomStore

  1. config.UseCustomStore(id =>
  2.                         {
  3.                                 if (".rpx".Equals(Path.GetExtension(id), StringComparison.InvariantCultureIgnoreCase))
  4.                                         return resourcesService.GetSectionReport(id);
  5.                                 return resourcesService.GetReport(id);
  6.                         })
复制代码
这个方法返回一个pageReport即可。参考示例Demo即可

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部