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

EasyUI行数据如何通过列索引而非字段获取列值及空值处理

我来帮你搞定这两个EasyUI的问题:

问题1:通过列索引而非字段名获取行数据对应值

EasyUI的datagrid行数据(rowdata)是通过字段名(field)来存储的,没法直接用索引拿到对应值,但我们可以绕个弯:先通过列索引拿到该列的字段名,再用字段名去取行数据的值。具体步骤如下:

  1. 获取目标datagrid的列配置数组
  2. 通过列索引提取对应列的field属性
  3. 用这个field去访问rowdata的对应属性值

示例代码:

// 替换成你的datagrid实际ID
var datagrid = $('#your-datagrid');
// 获取列配置(单级列取columns[0]即可,多级列需根据层级调整)
var columns = datagrid.datagrid('options').columns[0];
// 假设要获取第2列(索引从0开始)对应行的数据
var targetRow = datagrid.datagrid('getSelected'); // 或者你已有的rowdata变量
var targetField = columns[1].field;
var columnValue = targetRow[targetField];

这样就能通过列索引间接拿到行数据里对应列的值啦。

问题2:指标名称为空时不显示运算值的0

你需要给动态生成的“运算值”列添加formatter格式化函数,在渲染单元格时判断对应的指标名称是否为空,为空就返回空字符串,替代默认显示的0。修改你的代码如下:

// 生成指标名称列(你的原有代码)
first[12+4*i]['field'] = 'fxzb'+(i+1)+'_mc';
first[12+4*i]['title'] = '指标'+(i+1)+'名称';
first[12+4*i]['align'] = 'center';
first[12+4*i]['width'] = 150;

// 生成运算值列,添加格式化逻辑
first[13+4*i] = {}; // 建议用对象字面量替代new Array(),写法更规范
first[13+4*i]['field'] = 'fxzb'+(i+1)+'_ysz';
first[13+4*i]['title'] = '指标'+(i+1)+'运算值';
first[13+4*i]['align'] = 'center';
// 核心:添加formatter函数控制显示
first[13+4*i]['formatter'] = function(value, row, index) {
    // 获取当前运算值对应的指标名称字段
    var nameField = 'fxzb'+(i+1)+'_mc';
    // 判断指标名称是否为空(包含空字符串和纯空格的情况)
    if (!row[nameField] || row[nameField].trim() === '') {
        return ''; // 为空时返回空,不显示0
    }
    // 指标名称不为空时,返回原值(若value为0则正常显示)
    return value === undefined ? '' : value;
};

小提醒:用{}对象字面量创建列配置,比new Array()更符合JavaScript的编码习惯,也能避免一些潜在问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:31:39