Asp.net mvc 如何通过javascript JSON更新KendoUI图表?

Asp.net mvc 如何通过javascript JSON更新KendoUI图表?,asp.net-mvc,razor,kendo-ui,kendo-dataviz,Asp.net Mvc,Razor,Kendo Ui,Kendo Dataviz,因此,我有一个图表,它是使用MVC样式配置配置的 @(Html.Kendo().Chart<DIMVC.ViewModel.CompanyProduction>(Model.CompanyProduction) .Name("Chart") .Title("Files sent") .Legend(legend => legend .Position(ChartLegendPosition.Bottom) ) .ChartArea(c

因此,我有一个图表,它是使用MVC样式配置配置的

@(Html.Kendo().Chart<DIMVC.ViewModel.CompanyProduction>(Model.CompanyProduction)
     .Name("Chart")
     .Title("Files sent")
     .Legend(legend => legend
     .Position(ChartLegendPosition.Bottom)
 )
 .ChartArea(chartArea => chartArea
     .Background("transparent")
 )
 .SeriesDefaults(seriesDefaults =>
     seriesDefaults.Line().Style(ChartLineStyle.Smooth)
 )
.Series(series => { 
     series.Line(model => model.SentFiles).Name("Sent Files");
     ...  { lots more series added here }
}
.CategoryAxis(axis => axis
     .Categories(model => model.MonthDisplay)
     .Labels(labels => labels.Rotation(-90))
)
.ValueAxis(axis => axis.Numeric()
     .Labels(labels => labels.Format("{0:N0}"))
     .MajorUnit(10000)
)
.Tooltip(tooltip => tooltip
    .Visible(true)
    .Format("{0:N0}")
)
.Events(e => e
    .SeriesClick("onSeriesClick")
)
javascript方法

现在,当图表更新时,网格只是空白

成功调用json请求并检索数据。 但填充图表后,图表为空

有人有什么建议吗

*编辑*

添加返回的JSON示例

目前,一些“SET档案文件”:1666,,“接收到的文件”文件:1632,,“接收到的公司数据”:16332,,,“公司公司数据”网站:::12803.村民们的公司一名公司一名公司一名公司一名公司一名:::::1 1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“\”接收到的数据如下:152878.878787845757575794103,,,,,,“MonthDisplay\:“10月10日,,“公司的显示显示”公司::null:,,,,,,,,,,{“公司ID”:1,:1,,,,,,,,,:1,:1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,:2013,\”月份\“:11,\“SentFiles\”:25956,\“ReceivedFiles\”:25249,\“SentData\”:196155.8977337967,\“ReceivedData\”:189320.44546897494,\“Note\”:null,\“MonthDisplay\”:“Nov\”,“CompanyDisplay\”:null}“

我还要指出,如果我加上这一点

.DataSource(ds => ds.Read(read =>
    read.Action("FetchData", "Home", new { startYear = 2012, endYear = 2013 })
))
对于我的图表配置,这将很好地填充图表,而无需使用页面
Model

i、 e.图表中的数据是正确的。

数据源期望一个数组作为其
数据的值,但它看起来像是您分配的
json
变量包含一个json字符串(至少如果您添加到问题中的字符串是您在
json
var中在客户端上看到的字符串)。如果您将数据类型设置为“json”,jQuery通常应该为您解析该数据类型(不确定为什么不会发生这种情况-您应该仔细检查
dataType
param是否设置正确)

您可以自己尝试解析它;除此之外,您还应该使用而不是创建新图表。按照您现在的操作方式,您只需将原始图表替换为没有配置的图表。在回调中尝试以下操作:

var data = JSON.parse(json);
var chart = $("#DINETChart").data("kendoChart");
var dataSource = new kendo.data.DataSource({
    data: data
});
chart.setDataSource(dataSource);

请注意,在
yearRangeChange
函数中,您试图在ajax成功调用之外调用图表刷新。使用
setDataSource
时,不需要
刷新
,但即使需要这样做,它也必须在回调中。否则,它会在ajax调用完成之前发生。

返回的JSON看起来像什么?@LarsHöppner在问题中添加了JSON。很抱歉,我将JSON字符串化了,以使其易于阅读。使用上述代码可以按预期工作:D
.DataSource(ds => ds.Read(read =>
    read.Action("FetchData", "Home", new { startYear = 2012, endYear = 2013 })
))
var data = JSON.parse(json);
var chart = $("#DINETChart").data("kendoChart");
var dataSource = new kendo.data.DataSource({
    data: data
});
chart.setDataSource(dataSource);