tangfan 发表于 2024-1-26 20:26:02

AR16 web设计器如何使用JS在打开的时候自动加载地址栏的传递的报表

AR16 web设计器如何使用JS在打开的时候自动加载地址栏的传递的报表。
之前AR15可以通过reportInfo传递报表名称加载,AR16好像变了,没有reportInfo对象。

var designerOptions = GrapeCity.ActiveReports.WebDesigner.createDesignerOptions();
designerOptions.server.url = 'api';
designerOptions.reportInfo ='报表名称';

AR16的index.cshtml文件
<script>
    var viewer = null;
    var designer = GrapeCity.ActiveReports.Designer.create('#ar-web-designer', {
      rpx: { enabled: true },
      appBar: { openButton: { visible: true } },
      documents: { fileView: { visible: @(Context.Request.Query["fileView"].Equals("true").ToString().ToLower()) } },
      data: { dataSets: { canModify: true }, dataSources: { canModify: true } },
      preview: {
            openViewer: (options) => {
                console.log(options);
                if (viewer) {
                  viewer.openReport(options.documentInfo.id);
                  return;
                }
                viewer = GrapeCity.ActiveReports.JSViewer.create({
                  element: '#' + options.element,
                  renderFormat: 'svg',
                  reportService: {
                        url: 'api/reporting',
                  },
                  reportID: options.documentInfo.id,
                  settings: {
                        zoomType: 'FitPage',
                  },
                });
            }
      }
    });
</script>




Felix.Li 发表于 2024-1-26 20:26:03

您的需求应该是设计器打开的时候,默认打开一个报表吧,我上面说的那个,应该是在16的时候也可以用的。

AR16后,确实创建报表主要推荐使用create创建,这样子自己做一个option对象,就可以创建,比之前简单,所以新的写法确实是create的。
新写法可以参考这个帖子
https://gcdn.grapecity.com.cn/showtopic-164040-1-1.html


但是老版本的写法我们也是延续的,那种也是可以用的。下面是我的一个demo。您可以参考一下:

wengMQ 发表于 2024-1-27 17:03:56

wengMQ 发表于 2024-1-27 17:06:44

【新提醒】Web端在线设计器项目实际分享 - ActiveReports专区 - 专题教程 - 葡萄城开发者社区https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=144262&extra=page%3D1

Felix.Li 发表于 2024-1-29 13:39:57

您好,这块有一点修改,现在打开报表是多了一层结构传递ID即可:

designerOptions.reportInfo.id = "AcmeStore.rdlx"
也就是这样。其他的基本没有变化,也可以沿用

tangfan 发表于 2024-1-29 14:44:06

Felix.Li 发表于 2024-1-29 13:39
您好,这块有一点修改,现在打开报表是多了一层结构传递ID即可:

designerOptions.reportInfo.id = "Acme ...
AR15是这样designerOptions.reportInfo = '@reportId' ? { id: '@reportId' } : null;
AR16这种方式不太行好像没这个对象


目前的解决方法是在报表创建完后再调用打开报表的api方法


.then(s => {
    if ('@reportId') {
      s.documents.openById(decodeURIComponent('@reportId'), { platform: 'rdlx', type: 'report' }).then(() => {
            console.log('An existing report "decodeURIComponent(@reportId)" is opened.');
      });
    }
});


想问问AR16有没有像AR15一样可以设置一个属性就能打开报表的方法

Felix.Li 发表于 2024-1-29 14:51:02



您可以参考我的这个回复。

不过理论是您console的时候,其实这个就应该能输出出来的。
如果没有,我怀疑是您没有升级JS。
在更新时,除了Nuget,前端的JS和CSS都要更新的。都可以在NPM上下载。

"@grapecity/ar-viewer": "16.4.1",
"@grapecity/ar-designer": "16.4.1",

tangfan 发表于 2024-1-29 15:03:57

您说的方法适合AR15,AR16不行,我是在GitHub - activereports/WebSamples16: Samples for ActiveReports Web Components上下的项目,package.json已经是您说的版本,

Eden.Sun 发表于 2024-1-29 18:39:00



您参考一下AR16的这里的有一个documentInfo 的id,您试一下这个:
https://developer.mescius.com/activereportsnet/docs/versions/v16/online/web-designer-plugins-api.html?highlight=documentinfo%2C



使用方式,可以参考一下这里的designer里面的使用:
https://github.com/activereports/WebSamples16/blob/main/WebDesignerSamples/WebDesigner_MVC/Views/Design/Index.cshtml


Eden.Sun 发表于 2024-1-31 09:31:35

您好,您的问题解决了么?
页: [1] 2
查看完整版本: AR16 web设计器如何使用JS在打开的时候自动加载地址栏的传递的报表