You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否为Kendo UI柱状图的data元素传递自定义数据获取函数?

关于Kendo UI柱状图通过函数传递数据的问题解答

嘿,我来帮你梳理下这个问题~首先得指出你当前写法里的核心问题:你定义的GetFundPerfCalendSP函数里嵌套了$(document).ready(),而且没有返回任何数据,Kendo UI图表的data属性需要的是直接的数据集合(比如数组),或者能同步返回数据的函数,但你的函数执行后其实是undefined,而且里面的异步逻辑(ready回调)也没法给图表提供数据。

下面给你两种可行的解决方案,适配你从ASP.NET MVC Action获取JSON数据的场景:

方案一:先异步获取数据,再初始化图表

这种方式先通过AJAX请求拿到数据,再用拿到的数据初始化Kendo图表,逻辑清晰直接:

// 封装获取数据的函数,返回AJAX Promise
function GetFundPerfCalendSP() {
  var value = $("#idProduitSP").text();
  return $.ajax({
    url: '/YourController/YourFundDataAction', // 替换成你的MVC Action地址
    type: 'GET',
    data: { produitId: value }, // 传递页面上的参数到Action
    dataType: 'json'
  });
}

// 在DOM加载完成后,先拿数据再渲染图表
$(document).ready(function() {
  GetFundPerfCalendSP()
    .done(function(fundData) {
      // 假设fundData是符合Kendo要求的数组,比如[{value: 15}, {value: 22}, ...]
      $("#yourChartId").kendoChart({
        series: [{
          name: "Oddo Avenir Euro CI-EUR",
          data: fundData,
          border: { width: 0 }
        }],
        // 补充其他图表配置,比如坐标轴、标题等
        title: { text: "基金业绩" },
        categoryAxis: { categories: ["Jan", "Feb", "Mar"] }
      });
    })
    .fail(function() {
      console.error('获取基金数据失败,请检查请求地址或参数');
    });
});

方案二:使用Kendo UI DataSource(更推荐)

Kendo自带的DataSource专门用来处理远程数据,支持自动加载、数据格式化、状态管理等功能,比手动写AJAX更省心:

$(document).ready(function() {
  var produitValue = $("#idProduitSP").text();
  
  $("#yourChartId").kendoChart({
    // 配置DataSource从MVC Action拉取数据
    dataSource: {
      transport: {
        read: {
          url: '/YourController/YourFundDataAction',
          type: 'GET',
          data: { produitId: produitValue },
          dataType: 'json'
        }
      },
      // 如果你的Action返回的是带包装的JSON(比如{ Data: [...], Total: 10 }),可以用schema提取数据
      schema: {
        data: function(response) {
          return response.Data; // 替换成你实际的数组字段名
          // 如果Action直接返回数组,就写 return response;
        }
      }
    },
    series: [{
      name: "Oddo Avenir Euro CI-EUR",
      field: 'value', // 替换成你JSON数据里的数值字段名
      border: { width: 0 }
    }],
    // 其他图表配置
    title: { text: "基金月度业绩" },
    categoryAxis: { field: 'month' } // 如果数据里有分类字段,直接绑定
  });
});

额外说明

如果一定要给data传递函数,这个函数必须同步返回数据,但你的场景是从服务器异步获取数据,同步函数根本等不到返回结果,所以这种方式不适用。上面两种异步方案才是正确的选择,尤其是第二种用Kendo DataSource的方式,更贴合Kendo的设计理念。

内容的提问来源于stack exchange,提问作者Haytham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:51:12