Как создать диаграмму со статическими параметрами
Я пытаюсь создать таблицу пончиков для телерика. Проблема в том, что мои значения не соответствуют ожидаемому формату.
Мои данные выглядят так:
{ 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
но они в конечном итоге отображались на разных уровнях, вроде пончиков внутри пончиков.
Как бы я это настроил?
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. Выполните инструкции Как создать круговую диаграмму, чтобы создать диаграмму.
Затем щелкните правой кнопкой мыши на круговой диаграмме. Нажмите "Изменить тип диаграммы...". В показе опций выберите кольцевую диаграмму.