Я работаю с диаграммой Kendo, используя оболочки MVC, которые мне нужно добавить во время выполнения на основе данных в моей модели.
Я проверил, что моя модель действительно содержит действительные данные, когда диаграмма готовится к визуализации.
Модель представления - это объект виджета диаграммы, который содержит список серий.
Это просто список серий диаграмм
Виджет диаграммы бюджета
namespace STC.Widgets.Budgeting
{
using System;
using System.Collections.Generic;
using Budget;
using Extensions;
using Helpers;
public class BudgetChartWidget
{
public BudgetChartWidget()
{
SeriesList = new List<IBudgetChartSeries>();
}
public List<IBudgetChartSeries> SeriesList { get; set; }
public string ChartTitle { get; set; }
}
}
**Budget Chart Series**
namespace STC.Widgets.Data.Budgeting
{
using System.Collections.Generic;
public class BudgetChartSeries : IBudgetChartSeries
{
public BudgetChartSeries(string seriesName)
{
Values = new List<IChartValue>();
SeriesName = seriesName;
}
public string SeriesName { get; set; }
public List<IChartValue> Values { get; set; }
}
}
Затем каждая серия диаграмм содержит значения
IChartValue
namespace STC.Widgets.Data.Budgeting
{
using System;
public interface IChartValue
{
string DisplayValue { get; set; }
DateTime Period { get; set; }
double? Value { get; set; }
}
}
Частичный просмотр диаграммы
@using STC.Widgets.Data.Budgeting
@model STC.Widgets.Budgeting.BudgetChartWidget
<div>
@(Html.Kendo().Chart(Model.SeriesList)
.Theme((string) ViewBag.ThemeName)
.Name("BudgetViewer" + 1)
.Series(series =>
{
foreach (var item in Model.SeriesList)
{
series.Column(item.Values).Field("Value").CategoryField("DisplayValue").Name(item.SeriesName);
}
})
.Legend(legend => legend.Position(ChartLegendPosition.Bottom).Visible(true))
.ValueAxis(axis => axis.Numeric()
.MajorGridLines(lines => lines.Visible(true))
.NarrowRange(true)
.Labels(labels => labels.Format("{0:N0}"))
.Line(line => line.Visible(true))
.Crosshair(crosshair => crosshair.Visible(true)
.Tooltip(t => t.Visible(true)))
)
.CategoryAxis(axis => axis
.Labels(labels => labels.Rotation(-90))
.MajorGridLines(lines => lines.Visible(false))
.Crosshair(crosshair => crosshair.Visible(true)
.Tooltip(t => t.Visible(true)))
)
.Tooltip(tooltip => tooltip.Visible(true).Format("{0:N0}").Shared(true)))
</div>
Когда я запускаю это, ряды отображаются в нижней легенде, но на графике данные не отображаются.
Я проверил, ошибок Javascript нет
Когда я использую Internet Explorer для просмотра источника диаграммы, я вижу, что данные есть
Я не вижу ничего плохого в том, как я создавал каждую серию, я даже пробовал разные способы передачи параметров.
Единственный, который имеет отношение к моей ситуации, - это тот, который я использую
Кто-нибудь может увидеть, упустил ли я что-то действительно очевидное, пожалуйста?
Павел