如何获取动态创建列的jQuery DataTable的列名?
解决jQuery DataTable动态列名获取问题
你可以通过遍历dt.columns().header()返回的表头元素集合,轻松提取列名,以下是两种实用方案:
方案1:提取表头显示文本(适配动态生成列)
这是最直接的方式,因为你是基于SQL表动态生成列,表头文本就是对应的列名:
text: 'Save', action: function (e, dt, node, config) { var json = JSON.stringify(dt.rows().data().toArray()); // 获取所有列名并转为数组 var columnNames = dt.columns().header().map(function(headerEl) { // 用jQuery获取表头文本并去除首尾空格 return $(headerEl).text().trim(); }).toArray(); // 现在columnNames就是所有列名的数组,可按需使用 console.log(columnNames); }
方案2:提取列定义中的name属性(若初始化时配置)
如果你的DataTable在动态创建列时给每列指定了name属性(比如和SQL列名绑定),可以直接从列配置中读取:
text: 'Save', action: function (e, dt, node, config) { var json = JSON.stringify(dt.rows().data().toArray()); var columnNames = dt.columns().map(function(colIdx) { // 从列配置中获取name属性 return dt.column(colIdx).settings()[0].aoColumns[colIdx].name; }).toArray(); console.log(columnNames); }
说明
dt.columns().header()返回的是包含所有表头<th>元素的jQuery对象,通过.map()遍历每个元素,再用text()提取显示内容即可得到列名。第一种方案完全适配你从SQL动态生成列的场景,无需额外配置。
内容的提问来源于stack exchange,提问作者Eray Balkanli
相关产品推荐
相关产品推荐

