You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用静态参数创建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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:40:14