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

Kendo Grid通过API请求获取数据成功但表格未填充数据问题咨询

问题原因及解决方案

核心问题1:JSONP格式不匹配

你配置了dataType: "jsonp",但你的API返回的是普通JSON格式,并非JSONP要求的「函数调用包裹JSON」格式,导致Kendo DataSource无法正常解析返回数据。而将dataType改为json时出现的CORS错误是跨域限制导致,比修改JSONP适配成本更低的方案是在后端接口配置CORS允许头。
以常见的Node.js Express后端为例,仅需引入cors中间件即可快速解决跨域问题:

// 后端代码示例
const cors = require('cors');
app.use(cors());

核心问题2:数据类型不匹配

你的API返回的Confirmed、Stat字段是数字1/0,但DataSource中定义的字段类型是布尔值,Kendo默认不会自动转换数字为布尔值,会导致字段解析失败。

核心问题3:Status列缺少模板

你在onDataBound回调中通过.badgeTemplate类名渲染状态徽章,但列定义中没有对应类名的元素,就算数据正常加载也无法显示状态标识。

完整修改方案

1. 后端配置CORS后,修改DataSource配置:

var gridDataSource = new kendo.data.DataSource({
  transport: {
    read:{
      url: "http://localhost:3000/api/reg",
      dataType: "json",
      type: "GET",
    }
  },
  schema:{
    // 若接口返回格式为 {data: [数据数组]} 请取消下一行注释
    // data: "data",
    parse: function(response) {
      // 若接口返回单条对象而非数组,统一转为数组格式
      const data = Array.isArray(response) ? response : [response];
      // 转换数字为布尔值
      return data.map(item => ({
        ...item,
        Confirmed: !!item.Confirmed,
        Stat: !!item.Stat
      }))
    },
    model:{
      id: "id",
      fields:{
        id: { type: "number" },
        Number: { type: "string" },
        Date: { type: "date" },
        Amout: { type: "number" },
        Net: { type: "number" },
        Category: { type: "string" },
        Commen: { type: "string" },
        Entity: { type: "string" },
        Quart: { type: "string" },
        Confirmed: { type: "boolean" },
        Stat: { type: "boolean" }
      }
    }
  }
});

2. 修改Status列定义,添加徽章模板:

{
    field: "Stat",
    title: "Status",
    template: '<span class="badgeTemplate"></span>'
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:51:02