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

DataTables使用row.add().draw()新增行时自定义内容与其他行不同

DataTable新增行与已有行按钮差异化实现方案

核心实现逻辑:给新增的临时行增加专属标识位,在操作列的渲染函数中根据标识判断行类型,返回对应按钮结构即可,无需单独写自定义行渲染逻辑。

步骤1:新增行时添加专属标记

调用row.add()时,给行数据加一个后端返回的已有行不会携带的标识字段,比如isNewRow: true:

$("#cur_act_tbl").DataTable().row.add({
    "mls": '',
    "street": '',
    "city": '',
    "zip": '',
    "country": '',
    "isNewRow": true // 新增临时行专属标记
}).draw();

步骤2:修改操作列渲染逻辑

在操作列的render回调中判断行类型,分别返回对应按钮:

注意:原配置中steet字段存在拼写错误,已修正为和入参一致的street,否则该列数据无法正常渲染

columns: [
    { data: 'mls' },
    { data: 'street' },        
    { data: 'city' },
    { data: 'zip' },
    { data: 'country' },             
    {
        'data': null, 
        'render': function (data, type, row, meta) {
            // 识别到是新增临时行,返回ADD按钮
            if (row.isNewRow) {
                return '<button id="add-'+meta.row+'" class="btn btn-success btn-xs add_active" data-title="Add" data-toggle="modal" data-target="#add">ADD(新增)</button>';
            }
            // 常规已有行,返回编辑+删除按钮
            return `
                <button id="edit-'+row.mls+'" class="btn btn-primary btn-xs edit_active" data-title="Edit" data-toggle="modal" data-target="#edit">EDIT(编辑)</button>
                <button id="del-'+row.mls+'" class="btn btn-danger btn-xs del_active" data-title="Delete" data-toggle="modal" data-target="#del">DEL(删除)</button>
            `;
        }
    }
]

后续处理提示

  • 点击ADD按钮提交数据成功后,直接调用表格ajax刷新接口,或者移除该行的isNewRow属性后调用draw(false)重绘,该行就会自动切换为显示编辑、删除按钮的常规状态
  • 额外添加的isNewRow字段不会影响其他列渲染,其他列都绑定了指定data字段,多余属性会被DataTable自动忽略

效果参考:
新增行展示ADD按钮效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:48:25