找回密码
 立即注册

QQ登录

只需一步,快速开始

After80s
金牌服务用户   /  发表于:2021-7-5 14:23  /   查看:3825  /  回复:5
本帖最后由 Crystal.Li 于 2021-7-5 14:49 编辑

我在项目里集成设计器的时候,使用了预置数据源和数据集的功能,目的是为了在报表运行时,可以动态的根据我自定义的参数和数据源显示报表内容。

如果要实现上述我的功能,就需要报表预置的数据源和数据集中,需要有一个字段和我自定义的数据源相匹配。

例如报表中定义的数据源A和对应的数据集B,在报表运行时,我的JS代码会根据上下文参数动态获取A和B的数据,然后通过jsondata=的方式赋值给报表,再显示出来。

现在遇到的问题是,在报表设计过程中,我已经预置了数据源A和对应的数据集B,用户第一次添加没有问题,但由于用户可以多次添加数据源和数据集,此时报表设计器中新增的数据源就会用A1、B1,A2,B2表示。

这样会导致报表在运行时,我的JS代码无法知道A1,B1等对应的jsondata数据应该是什么,这个问题应该如何解决?

1:是否可以限制同一数据源或数据集仅允许添加一次?
2:是否有字段可以设置A1,A2这些相同的数据源所使用的自定义数据源都为A?

5 个回复

倒序浏览
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-7-5 16:03:35
沙发
您好,
1、问题1目前没有开放的接口控只添加一次,但是其实可以想办法控制add按钮的css样式,使其不显示,就没有添加的入口了;
2、了解一下您这边动态绑定具体是怎么绑定的,可以贴一下相关代码吗?或者提供demo也可以~
回复 使用道具 举报
After80s
金牌服务用户   /  发表于:2021-7-5 16:15:05
板凳
Crystal.Li 发表于 2021-7-5 16:03
您好,
1、问题1目前没有开放的接口控只添加一次,但是其实可以想办法控制add按钮的css样式,使其不显示, ...

1:添加按钮不能隐藏,因为有可能有多个数据源需要添加。

2:动态绑定原理就是自己实现一套用户参数显示和数据加载机制,在展示报表的时候,先读取自定义的用户参数和数据源数据,然后在报表里通过名称找到对应的数据源,把对应数据源的jsondata替换掉。
回复 使用道具 举报
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-7-5 17:01:35
地板
您好,确认一下哈,咱现在的需求就是采用运行时数据绑定的方式:
用户可以自己添加数据源,可能有多个dataSource,dataSource是一个list。所以现在是不知道通过请求获取到数据之后,不知道把数据赋值给哪一个datasource,我理解是这样对吗?

本帖子中包含更多资源

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

x
回复 使用道具 举报
After80s
金牌服务用户   /  发表于:2021-7-5 17:22:03
5#
Crystal.Li 发表于 2021-7-5 17:01
您好,确认一下哈,咱现在的需求就是采用运行时数据绑定的方式:
用户可以自己添加数据源,可能有多个data ...

是的,我现在的做法是给数据源固定一个名称,比如说DynamicDS,然后在保存报表前判断一下有没有这个字符串开始但结尾是数字的数据源,如果有就提示错误禁止保存。当然这样的做法不够优雅。

我觉得最好的办法是,ARJS能允许数据源绑定到一个指定名称的外部JS方法上,同时允许定义数据源的加载顺序以及哪些数据源按顺序加载,哪些数据源按并行加载,这样做能大大增加ARJS的灵活性。

之所以这样建议,是因为我现在的场景,ARJS提供的用户参数种类和灵活度都不够,所以我需要自己实现用户参数的功能,其次,我现在系统的接口种类很多,但接口返回的数据都是固定的,很多情况下需要从多个接口拿数据,然后通过JS代码组合成新的数据提供给报表使用,所以需要按一定顺序调用接口,需要通过JS代码实现功能。之所以不能把报表和JS做好当成功能提供给客户用,是因为每个客户需求的报表数据不固定。

评分

参与人数 1金币 +1000 收起 理由
Crystal.Li + 1000 很给力!

查看全部评分

回复 使用道具 举报
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-7-5 17:54:55
6#
非常感谢您诚恳的建议!给您奖励1000金币,我将您的建议先反馈给产品经理,产品经理对此做一下相关评估~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部