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

如何根据另一列的值更改DxDataGrid(jQuery)的行颜色

jQuery框架下DxDataGrid根据列值修改行颜色实现方案

核心使用DxDataGrid官方提供的onRowPrepared生命周期回调实现,这个钩子会在每一行(包括数据行、表头、汇总行)渲染完成时触发,不会出现排序、翻页、筛选后样式丢失的问题。

具体实现步骤

  • 在组件初始化配置中添加onRowPrepared回调函数
  • 回调内先判断行类型,跳过表头、汇总行、分组行等非业务数据行
  • 从回调参数的data属性中读取目标判断列的取值
  • 根据取值给当前行的DOM元素添加对应样式即可

完整代码示例

假设用来判断的列字段名为status,值为1时行显示绿色、值为0时行显示红色:

$("#gridContainer").dxDataGrid({
    // 保留你原有的配置项,比如数据源、列定义
    dataSource: businessData,
    columns: [
        { dataField: "id", caption: "编号" },
        { dataField: "status", caption: "状态" },
        // 其余业务列配置
    ],
    // 核心样式控制逻辑
    onRowPrepared: function(e) {
        // 只处理普通数据行
        if (e.rowType !== "data") return;

        // 读取目标列的取值,把status替换成你实际的字段名
        const currentValue = e.data.status;
        if (currentValue === 1) {
            e.rowElement.css("background-color", "#dcfce7");
            // 需要改文字颜色可以追加:e.rowElement.css("color", "#166534");
        } else if (currentValue === 0) {
            e.rowElement.css("background-color", "#fee2e2");
            // 需要改文字颜色可以追加:e.rowElement.css("color", "#991b1b");
        }
    }
});

优化建议

如果需要适配行hover、选中状态的样式,更推荐用自定义CSS类的方式实现,比直接写内联样式更容易维护:

  1. 先定义自定义样式类
.grid-row-success {
    background-color: #dcfce7 !important;
}
.grid-row-danger {
    background-color: #fee2e2 !important;
}
  1. 把回调里的样式设置换成添加类名的写法
onRowPrepared: function(e) {
    if (e.rowType !== "data") return;
    const currentValue = e.data.status;
    e.rowElement.removeClass("grid-row-success grid-row-danger");
    if (currentValue === 1) {
        e.rowElement.addClass("grid-row-success");
    } else if (currentValue === 0) {
        e.rowElement.addClass("grid-row-danger");
    }
}

注意:不要用jQuery手动选择表格行DOM加样式,DxDataGrid在排序、筛选、翻页、虚拟滚动时会重新渲染行节点,手动绑定的样式会直接失效,必须用官方提供的行渲染钩子实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:06:20