Asp.net mvc 如何通过javascript JSON更新KendoUI图表?
因此,我有一个图表,它是使用MVC样式配置配置的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
@(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);