javascript - วิธีการอัปเดต jquery datatable แบบไดนามิกโดยใช้ array ของ js เป็นแหล่งข้อมูล
วิธีการอัปเดต jquery datatable แบบไดนามิกโดยใช้ array ของ js เป็นแหล่งข้อมูล เมื่อผู้ใช้คลิกปุ่มอัปเดต array ของ js ใหม่ควรถูกเพิ่มเข้าในแหล่งข้อมูลปัจจุบันและควรสะท้อนบน jquery datatable
<html>
<head>
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.6/css/jquery.dataTables.css">
</head>
<body>
<div id="demo"></div>
<button id="update">Update</button>
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="//cdn.datatables.net/1.10.6/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
var dataSet = [
['Trident','Internet Explorer 4.0','Win 95+','4','X'],
['Trident','Internet Explorer 5.0','Win 95+','5','C'],
['Trident','Internet Explorer 5.5','Win 95+','5.5','A'],
];
var ctr = 0;
$("#update").click(function() {
ctr++;
dataSet.push([ctr,ctr,ctr,ctr,ctr]);
console.log(JSON.stringify(dataSet));
});
$(document).ready(function() {
$('#demo').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>' );
$('#example').dataTable( {
"data": dataSet,
"columns": [
{ "title": "Engine" },
{ "title": "Browser" },
{ "title": "Platform" },
{ "title": "Version", "class": "center" },
{ "title": "Grade", "class": "center" }
]
});
});
</script>
</body>
</html>
คำตอบ #1
แทนที่จะปรับเปลี่ยนอาเรย์ข้อมูลเริ่มต้น ผมขอแนะนำให้ใช้วิธีของ DataTables API เช่น row.add() และ draw() เพื่ออัปเดตข้อมูล หากคุณต้องการข้อมูลหลังจากการเริ่มต้น สามารถเข้าถึงได้ด้วยวิธี data()
JSFiddle นี้อาจช่วยคุณได้
คำตอบ #2
เก็บตารางข้อมูลไว้ในตัวแปร js แบบทั่วโลก - dataTable เมื่อ dataSet เปลี่ยนแปลง เพียงทำลาย dataTable แล้วเริ่มต้นใหม่อีกครั้ง
if(dataTable != null)
dataTable.destroy();
dataTable = $('#example').dataTable( {
"data": dataSet,
"columns": [
{ "title": "Engine" },
{ "title": "Browser" },
{ "title": "Platform" },
{ "title": "Version", "class": "center" },
{ "title": "Grade", "class": "center" }
]
});
