Как создать график со статическими параметрами

Я пытаюсь создать кольцевую диаграмму отчетов 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, но в итоге они отображались на разных уровнях, вроде пончиков в пончиках.

Как мне это настроить?

0
0
121
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала напишите свою хранимую процедуру и вызовите ее из кода 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. Следуйте Как: создать круговую диаграмму, чтобы создать свою диаграмму.

Затем щелкните правой кнопкой мыши круговую диаграмму. Щелкните «Изменить тип диаграммы ...». В отображаемых параметрах выберите кольцевую диаграмму.

Другие вопросы по теме