After80s 发表于 2021-4-8 16:09:38

【AR15】是否可以实现报表参数的可选数据从动态数据源里获取,并实现级联功能?

本帖最后由 Crystal.Li 于 2021-4-8 18:17 编辑

例如报表设置了两个报表参数A和B,同时有两个动态数据集(DataTable或者Object)AD和BD。
A参数可选值的数据集是AD

B参数可选值的数据集是BD,并且BD数据集需要将A参数作为数据集参数用于动态获取数据。


需要实现的效果就是用户先选择A参数或,B参数的可选值可以根据A参数变化。比如说先选门店名称,再选择员工姓名。

请问上述需求在用ARNET在WEB模式下是否可以实现。

我在测试的过程中发现, 前端加载报表时先触发 UseCustomStore 回调,此时返回对应的Report对象。然后会触发 Document_LocateDataSource 回调,提示加载数据集,但此时返回 DataTable 对象后,前端会报错。

After80s 发表于 2021-4-8 16:57:49

参数的可选值使用动态数据集获取,但 Document_LocateDataSource 回调没有被触发,这应该是个BUG

Crystal.Li 发表于 2021-4-8 18:20:01

您好,这个不是产品的bug。
Document_LocateDataSource 回调是在预览点击查看报表按钮之后才会被触发执行,您直接预览报表本身就不会触发这个回调,所以肯定是不会被执行的。

After80s 发表于 2021-4-8 23:49:05

Crystal.Li 发表于 2021-4-8 18:20
您好,这个不是产品的bug。
Document_LocateDataSource 回调是在预览点击查看报表按钮之后才会被触发执行 ...

我没有理解你说的预览点击查看报表按钮的意思。你的意思是否是报表显示参数输入界面的时候,后台不触发 LocateDataSource,直到用户输完参数点击【Preview】按钮后,后台才触发 LocateDataSource 回调?

我认为既然报表参数允许将可选值绑定到一个数据集,并且又没有限制这个数据集的数据源类型,那么后台在第一步接收报表参数输入的时候,就应该在遇到DataSet、Object这一类数据源的情况下回调 LocateDataSource。

通过浏览器捕捉 JSViewer 的网络操作,实际上是有处理参数的过程(api/reporting/reports/{filename}/values),只是感觉像是后台在这里遇到这一类数据源的时候忘记回调处理了一样(或是内部处理了一部分,比如说SQLServer,CSV这一类)。

After80s 发表于 2021-4-9 09:59:12

是否可以通过拦截JSViewer的api/reporting/reports/{filename}/values调用达到目的?

Crystal.Li 发表于 2021-4-9 10:14:12

AR的机制是:采用设计时数据源的时候,这个参数在预览阶段可以获取到;但是采用运行时数据源,参数来自于动态数据源,在预览时这个数据源还没有被生成,所以会导致您配置的参数不会被获取到。
我这边给个建议:您可以想办法,增加一些方法,在预览时,先把这个动态数据源的数据拿到,然后传递给参数~

After80s 发表于 2021-4-9 10:22:33

Crystal.Li 发表于 2021-4-9 10:14
AR的机制是:采用设计时数据源的时候,这个参数在预览阶段可以获取到;但是采用运行时数据源,参数来自于动 ...

我不是在设计器里预览报表,我是设计好报表在web模式下运行,用JSViewer显示报表。

James.Lv 发表于 2021-4-9 11:44:32

After80s 发表于 2021-4-9 10:22
我不是在设计器里预览报表,我是设计好报表在web模式下运行,用JSViewer显示报表。

您好这个问题我刚跟同事了解一下,我们同事写个示例验证一下能否实现这样的功能

After80s 发表于 2021-4-12 08:46:25

这个问题有结果了吗?

James.Lv 发表于 2021-4-12 12:14:52

After80s 发表于 2021-4-12 08:46
这个问题有结果了吗?

您好,这个早上我们技术同事给您回复了,这个还在验证中,最晚明天应该会有结论
页: [1]
查看完整版本: 【AR15】是否可以实现报表参数的可选数据从动态数据源里获取,并实现级联功能?