如何创建带基础if-else判断的DataTables?表格空白问题求助
解决DataTables条件渲染导致表格空白的问题
我尝试使用以下代码创建带有基础if-else判断的DataTables:
"columns": [ { "data": "no" }, { "data": "id_perangkat" }, { "data": "tanggal" }, { "data": "nilai" }, "render": function (data, type, row) { if (type==='GET'){ if (data.nilai >== 1) { return "Apple"; } else if (data.nilai >== 51) { return "Banana"; } else return "tidak ada data"; } } ]但表格显示空白,我希望表格能根据if条件展示对应数据。
问题原因及修复方案
- columns数组结构错误:
render必须作为列对象的属性存在,不能单独成为columns数组的元素,否则会破坏DataTables的列配置结构。 - type参数判断错误:render函数的
type参数用于指定渲染场景(如display为显示、sort为排序),不是HTTP请求方法GET,错误判断会导致渲染逻辑不执行。 - 运算符与条件顺序错误:比较运算符应为
>=而非>==;且条件顺序需从大到小排列,否则大数值会被先触发的小条件拦截,永远无法进入后续判断。 - 缺少非场景下的返回值:当type不是目标场景时,需返回原始数据,否则会导致表格数据缺失、功能异常。
修正后的代码示例
方案1:在nilai列直接渲染判断结果
"columns": [ { "data": "no" }, { "data": "id_perangkat" }, { "data": "tanggal" }, { "data": "nilai", "render": function (data, type, row) { // 非显示场景返回原始数据,保证排序、筛选正常 if (type !== 'display') { return data; } // 从大到小判断条件 if (data >= 51) { return "Banana"; } else if (data >= 1) { return "Apple"; } else { return "tidak ada data"; } } } ]
方案2:新增一列展示判断结果
"columns": [ { "data": "no" }, { "data": "id_perangkat" }, { "data": "tanggal" }, { "data": "nilai" }, { "data": null, // 不绑定具体字段,通过row获取数据 "render": function (data, type, row) { if (type !== 'display') { return row.nilai; } if (row.nilai >= 51) { return "Banana"; } else if (row.nilai >= 1) { return "Apple"; } else { return "tidak ada data"; } } } ]
内容的提问来源于stack exchange,提问作者PUTRA RAMADAN NASUTION
相关产品推荐
相关产品推荐

