Почему моя диаграмма кендо не показывает никаких данных, но ряды отображаются в legen

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

Я не вижу ничего плохого в том, как я создавал каждую серию, я даже пробовал разные способы передачи параметров.

Единственный, который имеет отношение к моей ситуации, - это тот, который я использую

Кто-нибудь может увидеть, упустил ли я что-то действительно очевидное, пожалуйста?

Павел


person Paul    schedule 05.02.2016    source источник
comment
ты нашел что-нибудь для этого?   -  person saulyasar    schedule 11.03.2016


Ответы (1)


У меня была аналогичная проблема, в моем случае диаграмма изначально не отображалась, но когда я щелкнул легенду, диаграмма была показана, как и ожидалось. После проверки кажется, что размер диаграммы изначально изменялся неправильно.

<div class="chart-wrapper">
    @(Html.Kendo().Chart(...)
    .....
</div>

$(document).ready(function () {kendo.resize($(".chart-wrapper"));});, похоже, это исправляет.

person user5481980    schedule 22.09.2016