Как исправить данные таблицы обновляется или уничтожить таблицу? - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь создать таблицу данных с моим набором данных и хочу повторно инициализировать ту же таблицу для новых данных. Но он добавляется к той же таблице, а не переинициализируется. Это мой код

  function showTab(name,data){
    trheader = "";
    trvalues = "";
    trcontent = "";
    trfoot = "";
    table_id = "";
    trheader += "<thead>";
    for (i = 0; i < data[0].length; i++){
      trheader += "<th>" + data[0][i]+ "</th>";
    }
    trheader += "</thead>";
    if(data[1].length > 0){
      for (i = 0; i < data[1].length; i++){
        trvalues += "<tbody>"
        trvalues += "<tr>"
        trvalues += "<td class='center'>" + (i + 1) + "</td>";
        trvalues += "<td class='center'>" + data[1][i][0] + "</td>";
        for (j = 0; j < 4; j++ ){
          trvalues += "<td class='center'>" + data[1][i][1][j].toLocaleString() + "</td>";
        }
        for(j = 4; j < 7; j++){
          var patt = /^-/;
          var color = data[1][i][1][j].toString();
          if (color.match(patt)){
            trvalues += "<td class='center redCell'>" + data[1][i][1][j].toFixed(2) + '%'+ "</td>";
          }
          else if(color == '0'){
            trvalues += "<td></td>"
          }
          else{
            trvalues += "<td class='center greenCell'>" + data[1][i][1][j].toFixed(2) + '%' + "</td>";
          }
        }
        trvalues += "</tr>"
        trvalues += "</tbody>"
      }
    }
    if (data[2].length > 0)
    {
      trfoot += "<tfoot>"
      trfoot += "<tr>"
      trfoot += "<td></td>"
      trfoot += "<td>Total</td>"
      for (i = 0; i < 4; i++){
        trfoot += "<td class='center'>" + data[2][i].toLocaleString() + "</td>";
      }
      for( i = 4; i < 7; i ++){
        var patt = /^-/;
        var color = data[2][i].toString();
        if (color.match(patt)){
          trfoot += "<td class='center redCell'>" + data[2][i].toFixed(2) + '%'+ "</td>";
        }
        else if(color == '0'){
          trfoot += "<td></td>"
        }
        else{
          trfoot += "<td class='center greenCell'>" + data[2][i].toFixed(2) + '%' + "</td>";
        }
      }
      trfoot += "</tr>"
      trfoot += "</tfoot>"
    }
    trcontent = trheader + trvalues + trfoot;
    table = "#"+name;
    $(table).html(trcontent);
    $(table).DataTable({
      "scrollY":        "400px",
      "scrollCollapse": true,
      "paging":         false,
      "searching": false,
      "destroy": true
    });
    // new addition code
    var seen = {};
    $('table tr').each(function() {
    var txt = $(this).text();
    if (seen[txt])
    $(this).remove();
    else
    seen[txt] = true;
    });

Если я использую $(table).html, он загрузит только последнее значение trfooter. Я попытался установить bDestroy для таблицы, но ничего не помогает. Пожалуйста помоги. Спасибо.

Это мой скелет стола

<table border = "1px"cellpadding="0" cellspacing="1" width="100%" id= <%= table&.table_name %> style="background: none repeat scroll 0% 0%;font-size:12px;">
</table>

1 Ответ

1 голос
/ 22 января 2020

Вы можете уничтожить и повторно объявить вашу таблицу данных для загрузки последнего содержимого

// First Declaration
var table = $('#myTable').DataTable(); 

$('#submit').on( 'click', function () {
    $.getJSON( 'newTable', null, function ( json ) {
        // Destroy
        table.destroy();
        $('#myTable').empty(); // empty in case the columns change

        // ReDraw 
        table = $('#myTable').DataTable( {
            columns: json.columns,
            data:    json.rows
        } );
    } );
} );

Для получения дополнительной информации: https://datatables.net/reference/api/destroy ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...