在Telerik Desktop Reporting中如何将JSON子节点注入子报表字符串参数
概述
基于以下JSON示例,我尝试用主报表和子报表创建Telerik报表,子报表使用主报表JSON数据的子集。
数据流程如下:
- 应用程序将基础JSON数据注入主报表的string类型参数jsonData;
- jsonData绑定为报表数据源;
- 应用JSON数据选择器;
- 将选中的JSON节点Employes注入子报表,子报表将其作为JSON数据源使用。
问题出在第4步,渲染主报表时出现「Invalid value of report parameter 'jsonData'」错误。
Telerik Report无法将选中的JSON节点数据转换为合适的字符串。
完整上下文
完整配置说明:
- 两个报表的共同配置:
- 均包含string类型的报表参数jsonData;
- 均定义了JsonDataSource;
- string类型参数jsonData与主JsonDataSource的绑定规则:
- 属性路径:DataSource.Source
- 表达式:= Parameters.jsonData.Value
- 主报表配置:
- 使用JSON数据源选择器**$.Companies**,得到公司列表,每个公司包含:
- Name:公司名称字符串;
- Employes:员工列表对象;
- 完整JSON示例数据以字符串形式通过jsonData参数注入;
- 使用JSON数据源选择器**$.Companies**,得到公司列表,每个公司包含:
- 子报表配置:
- 同样包含string类型的报表参数jsonData;
- 使用JSON数据源选择器**$**,应得到包含以下字段的列表:
- Name:员工姓名字符串;
- Wage:员工薪资数值;
- 主报表中子报表的参数映射:
- 参数名称:jsonData
- 参数值:Fields.Employes
- 使用工具:Telerik Report Designer v15.1.21.716 (Desktop)
数据选择器似乎将JSON的Employes节点数据转换为了System.Object[],我无法将其转回JSON字符串。
我已在文档、网络、ChatGPT等渠道广泛搜索解决方案,但目前未找到有效方法。
求助前提
感谢各位帮助,但有以下要求:
- 仅接受纯JSON数据源的解决方案,不考虑Telerik Reporting支持的其他数据源;
- 解决方案需同时支持设计时和运行时。
{ "Companies": [ { "Name": "Company1", "Employes": [ { "Name": "Joe", "Wage": 1000 }, { "Name": "Jack", "Wage": 2000 } ] }, { "Name": "Company2", "Employes": [ { "Name": "Mary", "Wage": 3000 }, { "Name": "Mike", "Wage": 4000 } ] } ] }
内容的提问来源于stack exchange,提问作者Julio Nobre
相关产品推荐
相关产品推荐

