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