Kendo Grid数据获取问题:无法提取Description字段的sd值
解决Kendo Grid无法访问数据对象属性的问题
嘿,我来帮你搞定这个问题~ 你遇到的情况其实挺常见的,尤其是刚接触Kendo UI的时候,咱们一步步来捋清楚:
先搞明白问题根源
你说直接打印_data[0]控制台显示空白,但JSON.stringify(_data[0])能输出内容,这是因为Kendo Grid的_data里的对象是惰性加载的封装对象——控制台默认只显示对象的表层结构,只有当你展开它的时候才会去读取实际数据,所以直接打印看起来是空的,但数据其实实实在在存在。
而你之前尝试的两种写法都有小问题:
toString(Description):toString()方法不需要传参数,而且如果Description不是一个已定义的变量,这里会直接报错;JSON.stringify(_data[0].Description):如果_data[0]的Description属性不存在(或者大小写不匹配),就会输出undefined,但你说JSON.stringify(_data[0])有输出,说明属性肯定在里面,只是访问方式不对。
正确的解决步骤
先确认属性的真实名称
把JSON.stringify(_data[0])的输出复制出来,仔细核对属性名是不是Description(注意大小写!Kendo会严格对应后端返回的字段名,比如后端返回的是description小写,这里就不能用大写访问)。直接访问属性(最简单的方式)
如果属性名确认是Description,直接这样写就行:const grid = $("#grid").data("kendoGrid"); const firstRowData = grid._data[0]; console.log(firstRowData.Description); // 这下应该能拿到"sd"了推荐用官方API(更稳妥)
直接访问_data属于操作私有属性,Kendo的版本更新可能会修改这个属性名,所以更推荐用官方提供的dataItem方法来获取行数据:const grid = $("#grid").data("kendoGrid"); // 获取第一行的数据对象(索引从0开始) const firstRowData = grid.dataItem(0); console.log(firstRowData.Description);
额外小技巧
如果还是不确定属性名,可以用Object.keys()来查看对象的所有可访问属性:
console.log(Object.keys(firstRowData));
这样就能列出这个数据对象的所有属性,精准找到你要的Description(或者对应的字段名)。
内容的提问来源于stack exchange,提问作者MrLakish
相关产品推荐
相关产品推荐

