datatable如何直接更新数据

本文介绍了一种更新由数组填充的Datatable数据的方法。通过记录当前页码、清除原有数据、添加新数据并重新定位到记录页码的方式实现数据刷新。

如果一个datatable生成的表格是ajax请求的数据的,我们只需要 xxx.ajax.reload()即可重新获取数据

但如果数据是从别处直接拿过来的数组该如何更新,

具体操作是

记录当前页码

清除整个表格数据

添加表格的全部数据

定位页面当之前的记录,并重绘

操作见下面的代码

var realTable = $('#example').DataTable(dataTableSetting)
    
// 新数据
newDataList=[
  ['a1', 'b1'],
  ['a2', 'b2']
]
 
function reloadData(dataList) {
    var currentPage = realTable.page()
    realTable.clear()
    realTable.rows.add(newDataList)
    realTable.page(currentPage).draw( false );
}

reloadData(newDataList)

### 更新 DataTable 数据后重新渲染的方法 在使用 DataTable 时,当数据发生更新(例如删除或新增数据),需要确保表格能够正确重新加载并渲染新数据。以下是实现这一目标的几种方法: #### 方法一:销毁并重新初始化 DataTable 通过销毁现有的 DataTable 实例并重新初始化,可以确保表格显示最新的数据。此方法适用于数据更新较为频繁的场景。 ```javascript function reloadDataTable() { $.ajax({ type: "GET", url: "/Order/MyJsonList", success: function (result) { var html = template('Orders-template', result); // 使用模板引擎生成新的 HTML 内容 if ($('#datatable1').hasClass('dataTable')) { var dttable = $('#datatable1').DataTable(); // 获取 DataTable 实例 dttable.clear().draw(); // 清空现有数据并重新绘制表格[^2] dttable.destroy(); // 销毁 DataTable 实例 } $("#datatable1").find("tbody").html(html); // 更新 tbody 的内容 $('#datatable1').DataTable({ // 重新初始化 DataTable "aoColumnDefs": [ { "bSearchable": true, "bVisible": true, "bSortable": true, "aTargets": [2, 3] }, { "bVisible": false, "aTargets": [0] }, { "bSortable": false, "aTargets": [1, 4] } ], "bAutoWidth": false, "aaSorting": [[0, "desc"]], "sPaginationType": "full_numbers", "oLanguage": { "sProcessing": "正在加载中......", "sLengthMenu": "每页显示 _MENU_ 条记录", "sZeroRecords": "对不起,查询不到相关数据!", "sEmptyTable": "表中无数据存在!", "sInfo": "当前显示 _START_ 到 _END_ 条,共 _TOTAL_ 条记录", "sInfoFiltered": "数据表中共为 _MAX_ 条记录", "sSearch": "当前结果内搜索", "oPaginate": { "sFirst": "首页", "sPrevious": "上一页", "sNext": "下一页", "sLast": "末页" } } }); } }); } ``` #### 方法二:使用 `clear()` 和 `rows.add()` 更新数据 如果不想销毁和重新初始化 DataTable,可以通过 `clear()` 方法清空现有数据,并使用 `rows.add()` 方法添加新数据来实现更新。 ```javascript function updateDataTable(newData) { var dttable = $('#datatable1').DataTable(); dttable.clear(); // 清空现有数据 $.each(newData, function (index, row) { dttable.row.add(row); // 添加新数据行 }); dttable.draw(); // 重新绘制表格[^1] } ``` #### 方法三:直接替换数据源 通过设置新的数据源,可以直接更新 DataTable数据而无需手动操作每一行。 ```javascript function refreshDataTable(dataSource) { var dttable = $('#datatable1').DataTable(); dttable.clear().rows.add(dataSource).draw(); // 清空、添加新数据并重新绘制 } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值