如何通过JavaScript JSON更新KendoUI图表?

秘密松鼠

所以我有一个使用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")
)

我在页面上也有一个滑块。当滑块值更改时,我将处理此事件。

@(Html.Kendo().RangeSlider()
    .Name("yearRange")
    .Min(2000)
    .Max(DateTime.Today.Year)
    .SmallStep(1)
    .LargeStep(5)
    .Values(Model.MinYear, Model.MaxYear)
    .Events(e => e.Change("yearRangeChange"))
 )

javascript方法

function yearRangeChange(e)
{
     var url = "/FetchData/";

     $.ajax({
         type: "GET",
         url: url,
         data: { startYear: e.values[0], endYear: e.values[1] },
         dataType: "json",
         success: function (json) {

        $("#DINETChart").kendoChart({
            dataSource: {
               data: json
        }
    });

     var chart = $("#DINETChart").data("kendoChart");
    chart.refresh();
 }
 }); 
 }

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

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

有人有任何建议吗?

*编辑*

添加返回的JSON样本

"[{\"CompanyID\":1,\"Year\":2011,\"Month\":8,\"SentFiles\":1666,\"ReceivedFiles\":1632,\"SentData\":12803.674593292486,\"ReceivedData\":11908.047586546765,\"Note\":null,\"MonthDisplay\":\"Aug\",\"CompanyDisplay\":null},{\"CompanyID\":1,\"Year\":2013,\"Month\":10,\"SentFiles\":21004,\"ReceivedFiles\":20387,\"SentData\":157376.825542573,\"ReceivedData\":152878.87845794103,\"Note\":null,\"MonthDisplay\":\"Oct\",\"CompanyDisplay\":null},{\"CompanyID\":1,\"Year\":2013,\"Month\":4,\"SentFiles\":9989,\"ReceivedFiles\":9880,\"SentData\":74913.53277995327,\"ReceivedData\":75145.16331588416,\"Note\":null,\"MonthDisplay\":\"Apr\",\"CompanyDisplay\":null},{\"CompanyID\":1,\"Year\":2013,\"Month\":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 })
))

到我的图表配置中,这将很好地填充图表,而无需使用page Model即该数据对于图表而言是正确的。

拉斯·霍普纳(LarsHöppner)

数据源期望使用数组作为其值data,但看起来json您要分配变量包含JSON字符串(至少如果您添加到问题中的字符串是您在jsonvar客户端上看到的字符串)。如果您将dataType设置为“ json”,则jQuery通常应该为您解析该信息(不知道为什么这对您而言没有发生-您应再次检查dataType参数设置是否正确)。

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过JavaScript更新CSS?

来自分类Dev

KendoUI更新请求不使用JSON的问题,无论dataType:JSON属性如何

来自分类Dev

KendoUI更新请求不使用JSON的问题,无论dataType:JSON属性如何

来自分类Dev

如何通过javascript代码更新时间是givnen

来自分类Dev

如何在KendoUI / Angular Window上调整Highcharts图表的大小

来自分类Dev

如何通过python正确更新Google表格图表数据范围?

来自分类Dev

Highchart:如何通过单击按钮更新动态图表?

来自分类Dev

D3.js-如何通过Javascript更新数据集?

来自分类Dev

如何用KendoUi绑定Json数据

来自分类Dev

如何通过jquery / javascript插件验证和美化JSON

来自分类Dev

如何通过javaScript/jquery从php获取json返回值?

来自分类Dev

通过javascript部分更新

来自分类Dev

通过javascript部分更新

来自分类Dev

如何动态更新KendoUI网格中的其他行字段?

来自分类Dev

图表。如何更新实时图表中的两个系列?

来自分类Dev

根据下拉选择更新图表-javascript

来自分类Dev

Javascript:用于多个图表更新的 setInterval

来自分类Dev

通过javascript访问JSON

来自分类Dev

如何使用事件更新Google图表?

来自分类Dev

如何从excel更新powerpoint图表中的范围

来自分类Dev

通过纯JavaScript更新CSS ...如果该属性使用供应商前缀,如何更新?

来自分类Dev

当通过ajax不断更新内容时,如何创建持久的javascript进行更新?

来自分类Dev

如何从多个本地json文件生成图表图表

来自分类Dev

如何通过拖放JavaScript和PHP中的外部事件来更新数据库中的事件?

来自分类Dev

如何通过Javascript函数调用PHP函数更新mysql表中的数据?

来自分类Dev

通过Ajax将JSON传递到Google图表-如何格式化日期

来自分类Dev

通过JSON响应如何遍历从取(),然后将其添加到图表的数据?

来自分类Dev

通过JSON / JS通过AJAX调用创建Google图表

来自分类Dev

如何通过REST服务返回的JavaScript中的JSON数组进行迭代?

Related 相关文章

  1. 1

    如何通过JavaScript更新CSS?

  2. 2

    KendoUI更新请求不使用JSON的问题,无论dataType:JSON属性如何

  3. 3

    KendoUI更新请求不使用JSON的问题,无论dataType:JSON属性如何

  4. 4

    如何通过javascript代码更新时间是givnen

  5. 5

    如何在KendoUI / Angular Window上调整Highcharts图表的大小

  6. 6

    如何通过python正确更新Google表格图表数据范围?

  7. 7

    Highchart:如何通过单击按钮更新动态图表?

  8. 8

    D3.js-如何通过Javascript更新数据集?

  9. 9

    如何用KendoUi绑定Json数据

  10. 10

    如何通过jquery / javascript插件验证和美化JSON

  11. 11

    如何通过javaScript/jquery从php获取json返回值?

  12. 12

    通过javascript部分更新

  13. 13

    通过javascript部分更新

  14. 14

    如何动态更新KendoUI网格中的其他行字段?

  15. 15

    图表。如何更新实时图表中的两个系列?

  16. 16

    根据下拉选择更新图表-javascript

  17. 17

    Javascript:用于多个图表更新的 setInterval

  18. 18

    通过javascript访问JSON

  19. 19

    如何使用事件更新Google图表?

  20. 20

    如何从excel更新powerpoint图表中的范围

  21. 21

    通过纯JavaScript更新CSS ...如果该属性使用供应商前缀,如何更新?

  22. 22

    当通过ajax不断更新内容时,如何创建持久的javascript进行更新?

  23. 23

    如何从多个本地json文件生成图表图表

  24. 24

    如何通过拖放JavaScript和PHP中的外部事件来更新数据库中的事件?

  25. 25

    如何通过Javascript函数调用PHP函数更新mysql表中的数据?

  26. 26

    通过Ajax将JSON传递到Google图表-如何格式化日期

  27. 27

    通过JSON响应如何遍历从取(),然后将其添加到图表的数据?

  28. 28

    通过JSON / JS通过AJAX调用创建Google图表

  29. 29

    如何通过REST服务返回的JavaScript中的JSON数组进行迭代?

热门标签

归档