如何使用静态参数创建图表

How to create a chart with static parameters

我正在尝试创建一个 telerik 报告圆环图。问题是,我的值不是预期的格式。

我的数据是这样的:

{ GoodHours: 120, Downtime: 43.5, PlannedTime: 12.77 }

图表的设置方式似乎是期望这样的数据:

{ 
    Time: 60, Type: "GoodHours",
    Time: 45, Type: "GoodHours",
    Time: 43.5, Type: "Downtime",
    Time: 15, Type: "GoodHours",
    Time: 12.77, Type: "PlannedTime"
}

我的数据采用这种格式的原因是因为它来自一个相当复杂的存储过程,该存储过程在将数据发送到报表之前自行进行记录聚合。让 MsSql 处理数字比让 telerik 报告来处理数字要快得多。

没有知道如何开始设置图表。

我按照在线说明创建圆环图(饼图),但它假定我的数据尚未被消化。我尝试添加多个 Series 但它们最终显示在不同的层次上,有点像甜甜圈中的甜甜圈。

我该如何设置?

首先,编写存储过程并从 C# 代码中调用它。

创建一个可序列化对象来存储来自 SP 的数据。

[Serializable()]
public class reportTimeTypeObj
{
    public decimal time { get; set; }
    public string type { get; set; }
}

然后创建一个将使用数据并将其转换为所需格式的函数。

public List<reportTimeTypeObj> getTimeSpentPatientByVisitTypeObj()
{
    //Create a list of objects for your donut.
    reportTimeTypeObj list = new List<reportTimeTypeObj>();

    //Add code to call stored procedure here
    //ds is the data set returned from the stored procedure

    if (ds.Tables.Count > 0)
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            list.Add(new reportTimeSpentPatientByVisitTypeObj()
            {
                time = dr["time "] != DBNull.Value ?
                                Convert.ToDecimal(dr["time "]) : 0,
                type = dr["type "] != DBNull.Value ? 
                            string.IsNullOrEmpty(dr["visit_type"].ToString()) ?
                            "Not recorded" :
                            Convert.ToString(dr["visit_type"]) : "Not recorded"
        });
    }
    return list;
}

接下来,使用报表设计器创建一个 ObjectDataSource (ODS) 组件。将功能分配给 ODS。按照 How to: Create Pie Chart 创建您的图表。

接下来,右键单击您的饼图。单击 "Change Chart Type..."。在选项中显示 select 圆环图。