【发布时间】:2019-11-25 12:47:59
【问题描述】:
我在使用 Datatables 插件时遇到了用户添加行后重新加载表的问题。
我正在接收一些 JSON 数据作为 web 服务调用的一部分,在成功接收到该数据后,我正在调用一个函数,该函数将构建表行并将它们附加到数据表的 tbody,如下所示:
const buildTableRows = obj => {
const table = document.querySelector('#participantes tbody');
table.innerHTML = "";
for (item of obj) {
const tableRow = `<tr id="${item.ContactoId}" data-contributos="${item.Contributos}" data-updated="false" class="participante-row"><td><i class="material-icons">arrow_right</i>${item.Nome}</td><td class="contributos"><input value="${item.Contributos}">   <i class="material-icons delete">delete_forever</i></td></tr>`;
table.insertAdjacentHTML('beforeend', tableRow);
}
}
在此之后,我调用另一个函数负责初始化 Datatable 并将其保存到全局对象以供将来参考:
const buildDataTable = () => {
const table = $('#participantes').DataTable({
"pagingType": "simple_numbers",
"pageLength": 4,
"lengthChange": false,
"columnDefs": [{
"targets": 1,
"orderable": false
}],
responsive: true
});
controlObj.datatable = table;
}
在我的 HTML 中,我有一个动态生成的选择元素,它允许用户向表中添加一行。当用户添加行时,这两个函数会再次被调用。我可以在我的数据结构中看到新行,但是如果没有重新加载页面,表格就不会刷新。我浏览了插件文档并尝试使用销毁方法,rows.add()、clear()、draw() 等。但似乎没有什么对我有用。表结构已经在 DOM 中,我只需要重新加载表。任何帮助将不胜感激
【问题讨论】:
-
你能把代码放在你调用 clear 和 draw 方法的地方吗?通常在这种情况下,DOM 不会在没有任何事件的情况下刷新,因此请查看是否可以使用
on()或delegate调用clear和draw方法(如果您使用的是旧版本的 jquery。
标签: javascript jquery datatables