How can I overwrite data on Datatables?

风格不统一 提交于 2021-01-29 20:11:39

问题


On a template, I have a websocket connection which sends to the page data every second. So every second a new array of arrays like the one below is received, just with different values. I'm trying to show this data on a datatable. The problem is that I need to override the data on the table, so every time I receive a new array of arrays, the previous data that was on the table must be overwritten with the new records.

var data = [
[1, 5],
[9, 3],
[71.55, 17],
[1800, 20],
[713, 3],
]

Here is what I tried:

$.each(data, function(key,value) {
    $('#mytable').append('<tr><td>'+value[0]+'</td><td>'+value[1]+'</td></tr>')
})

The problem with this code is that, although it will show the data correctly, every time I receive a new array, instead of overwriting the old one it will just append the data.

I also tried:

$.each(data, function(key,value) {
    $('#mytable').html('<tr><td>'+value[0]+'</td><td>'+value[1]+'</td></tr>')
})

But this is not going to work, since it will only loop through the array and only show one record of the array at time.

Here is the table:

<table id="mytable" class="pos-table table table-striped table-hover">
  <thead>
    <tr>
      <th>RATE</th>
      <th>AMOUNT</th>
    </tr>
  </thead>
</table>

回答1:


You must generate the dataTable in a variable, then you can destroy it, add the rows and again in the variable create the dataTable

   tb.destroy();
   // insert rows
   tb=$('#mytable').DataTable();

<html>

<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.20/js/jquery.dataTables.min.js"></script>
</head>

<body>

  <table id="mytable" class="pos-table table table-striped table-hover">
    <thead>
      <tr>
        <th>RATE</th>
        <th>AMOUNT</th>
      </tr>
    </thead>
  </table>
  <button onclick="add();">add</button>

  </button>
  <script>
    var data = [
      [1, 5],
      [9, 3],
      [71.55, 17],
      [1800, 20],
      [713, 3],
    ]
    var tb = $('#mytable').DataTable();
    $(document).ready(function() {
      add();
    });

    function add(table) {
      tb.destroy();
      $.each(data, function(key, value) {
        $('#mytable').append('<tr><td>' + value[0] + '</td><td>' + value[1] + '</td></tr>')
      })
      tb = $('#mytable').DataTable();
    }
  </script>
</body>

</html>


来源:https://stackoverflow.com/questions/61413296/how-can-i-overwrite-data-on-datatables

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!