【问题标题】:How to dynamically update jquery datatable using js array as data source如何使用js数组作为数据源动态更新jquery数据表
【发布时间】:2015-06-14 09:44:38
【问题描述】:

如何使用js数组作为数据源动态更新jquery数据表。 当用户单击更新按钮时,应该添加一个新的 js 数组当前数据源,它应该反映在 jquery 数据表上。

<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>

【问题讨论】:

    标签: javascript jquery datatables jquery-datatables datatables-1.10


    【解决方案1】:

    我建议使用 row.add()draw() 等 DataTables API 方法来更新数据,而不是操作初始数据数组。如果初始化后需要数据,可以通过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" }
          ]
          });
      

      【讨论】:

      • 如果表用dataTable()初始化,则没有destroy()方法,在这种情况下应该是api().destroy()
      猜你喜欢
      • 1970-01-01
      • 2014-12-04
      • 2015-07-17
      • 2015-12-07
      • 1970-01-01
      • 2011-10-09
      • 2021-12-09
      • 2012-10-29
      • 1970-01-01
      相关资源
      最近更新 更多