基于下面的 json 示例,我尝试使用主报告和子报告定义一个 Telerik 报告,其中第二个报告包含主报告 json 数据的子集。
基本上,数据流模仿如下:
第 4 步出现了问题,渲染主报告时出现 [报告参数“jsonData”的值无效] 错误。
似乎Telerik Report无法将选定的json节点字段数据转换为正确的字符串。
完整上下文
在两份报告中:
string数据类型的jsonData报告参数;
JsonDataSource;
jsonData 参数和主 JsonDataSource 之间的绑定基于:
主要报告:
正在使用Name,代表公司名称的字符串;
Employes,包含公司员工列表的对象。
关于子报告:
再次在主报告上,我使用以下子报告参数映射:
Telerik Report Designer v15.1.21.716(桌面版)
Employes 节点日期转换为 System.Object[],这让我很难弄清楚如何将其转换回 json 字符串。
我已经在文档、网络、ChatGPT 等方面广泛搜索了有效的解决方案。到目前为止,还没有运气。在你帮助我之前
{
"Companies": [
{
"Name": "Company1",
"Employes": [
{
"Name": "Joe",
"Wage": 1000
},
{
"Name": "Jack",
"Wage": 2000
}
]
},
{
"Name": "Company2",
"Employes": [
{
"Name": "Mary",
"Wage": 3000
},
{
"Name": "Mike",
"Wage": 4000
}
]
}
]
}
CStr() 函数将其转换。
但是,您可以使用如何表示分层嵌套数据知识库文章中描述的绑定,而不是使用参数来设置子报表的数据源。
我还想提一下,在R3 2022 SP1 版本中,DataSource 属性也被添加到 SubReport 项中。这使得我上面建议的方法已经过时了,因为它允许您直接在主报表中绑定子报表的数据源。 例如:
解决方案1Property path: DataSource
Expression: = Fields.Employes
解决方案2
Property path: jsonData
Expression: = CStr(Fields.Employes)
请记住...解决方案1,不需要显式地将内部子报表绑定到数据源;
解决方案2,需要子报表之间额外绑定 参数及其数据源,如原始帖子所述。