找回密码
 立即注册

QQ登录

只需一步,快速开始

KearneyKang 讲师达人认证 悬赏达人认证
超级版主   /  发表于:2023-6-14 11:42  /   查看:1228  /  回复:2
本帖最后由 Bella.Yuan 于 2023-6-19 14:33 编辑

ActiveReports的桌面设计器支持通过脚本的方式实现自定义函数,Web设计器前面一直不支持自定义函数。但是在ActiveReports17提供API支持通过后端实现一些自定义的功能,前端报表设计的时候直接调用对应的函数就可以实现函数自定义,比如我们经常说的的,大小写转换、数据逻辑判断等其他非常自定义的需求都可以在web设计器中实现。
下面就带大家一起来看看如何在Web端实现函数自定义
1、首先打开通过Visual Studio打开AR的Web设计器的代码



2、打开 Startup.cs 文件,并自定义app.UseReporting()方法
  1. app.UseReporting(settings =>
  2.                         {
  3.                                 settings.UseCompression = true;
  4.                                 settings.UseCustomStore(report =>
  5.                                 {                                       
  6.                                         PageReport rep = new PageReport();
  7.                                         string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");            
  8.                                         rep.Load(new FileInfo(@"" + path + "resources/" + HttpUtility.UrlDecode(report)));
  9.                                         var customCodeAssembly = typeof(CustomCode).Assembly;
  10.                                         rep.Report.CodeModules.Add(customCodeAssembly.ToString());
  11.                                         return rep.Report;
  12.                                 });
  13.                         });
复制代码
3、app.UseReporting()自定义的方法中调用了类 CustomCode
在类文件CustomCode中进行函数自定义
  1. namespace CustomCodeInjector
  2. {
  3.          public static class CustomCode
  4.            {
  5.               public static string PadLeft(string input, int width)//自定义函数 PadLeft
  6.                {
  7.                   return "测试";//返回值
  8.                }
  9.          }
  10. }
复制代码
4、打开报表Web设计界面,调用自定义函数PadLeft()
函数调用的表达式如下:
  1. {CustomCodeInjector.CustomCode.PadLeft("test", 18)}
复制代码
5、拖入一个文本框绑定表达式


6、预览结果如下:


7、demo

本帖子中包含更多资源

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

x

2 个回复

倒序浏览
DDZ
注册会员   /  发表于:2023-7-19 16:35:16
沙发
如何实现关于集合的自定义函数,带 scope 参数的
如 {DistinctSum(OrderID, OrderFreight, "Order")} 这样的集合函数
我要实现一个 {DistinctJoin(OrderID, OrderName, "Order")} 这样的 DistinctJoin 函数
要怎么做?
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2023-7-19 17:21:07
板凳
DDZ 发表于 2023-7-19 16:35
如何实现关于集合的自定义函数,带 scope 参数的
如 {DistinctSum(OrderID, OrderFreight, "Order")} 这样 ...

您好,这是产品新特性介绍贴, 建议您开个新贴,具体描述您的问题和需求,咱们再看怎么解决呢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部