6

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

2 に答える 2

3

初期データ配列を操作する代わりに、row.add()や などの DataTables API メソッドを使用しdraw()てデータを更新することをお勧めします。初期化後にデータが必要な場合は、data()メソッドでアクセスできます。

このJSFiddleが役立つかもしれません。

于 2015-04-09T08:08:27.527 に答える
0

グローバル 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" }
    ]
    });
于 2015-10-17T18:52:50.023 に答える