如何使用静态参数创建Telerik Reporting环形图及格式适配问题
解决Telerik环形图数据格式不匹配的问题
嘿,我完全懂你的处境——Telerik环形图要求的是**[{Time: 数值, Type: "类型"}, ...]**这种数组式的键值对数据,但你手里的是一个扁平的对象,直接绑定肯定没法正确渲染出各分段。好在咱们不用动那套复杂的数据源系统,只要加个数据转换步骤就能搞定!
方法1:后端C#转换(适合.NET环境的Telerik Reporting)
首先定义图表需要的数据模型:
public class ChartTimeEntry { public double Time { get; set; } public string Type { get; set; } }
然后把你现有的扁平数据转换成目标格式:
// 假设这是你从复杂系统拿到的原始数据 var rawData = new { GoodHours = 120.0, Downtime = 43.5, PlannedTime = 12.77 }; // 转换为图表兼容的数组 var chartReadyData = new List<ChartTimeEntry>(); foreach (var property in rawData.GetType().GetProperties()) { chartReadyData.Add(new ChartTimeEntry { Time = (double)property.GetValue(rawData), Type = property.Name }); }
最后把chartReadyData绑定到环形图的数据源,在图表设置里把类别字段设为Type,**数值字段设为Time**就可以了。
方法2:报表设计器内用脚本转换(不用改后端)
如果不想动后端代码,也可以在Telerik报表设计器里的数据源事件中加一段转换脚本(C#示例):
// 在报表的DataSourceBinding事件中编写 var originalSource = (dynamic)this.DataSource; var convertedList = new List<object>(); foreach (var prop in originalSource.GetType().GetProperties()) { convertedList.Add(new { Time = Convert.ToDouble(prop.GetValue(originalSource)), Type = prop.Name }); } this.DataSource = convertedList;
方法3:前端JavaScript转换(适合HTML5 Viewer场景)
如果是用Telerik Reporting的HTML5 Viewer,也可以在前端处理数据:
// 原始数据 const rawData = { GoodHours: 120, Downtime: 43.5, PlannedTime: 12.77 }; // 转换为图表需要的格式 const chartData = Object.entries(rawData).map(([type, time]) => ({ Time: time, Type: type })); // 把chartData传给报表数据源
这种转换方式完全不会影响你原有复杂数据源的结构,只是做了一层格式映射,完美适配环形图的要求~
内容的提问来源于stack exchange,提问作者Matthew Goulart
相关产品推荐
相关产品推荐

