Javascript 使用Datatables导出动态表

Javascript 使用Datatables导出动态表,javascript,jquery,datatables,Javascript,Jquery,Datatables,我正在尝试使用Datatables导出表 我遇到的问题是我有下表: <table id="tbl" class="display nowrap" cellspacing="0" width="100%"> <thead> <tr> <th data-field="ID">ID</th> <th data-field="Name">Name</th> <th data-formatter="operateFo

我正在尝试使用Datatables导出表

我遇到的问题是我有下表:

<table id="tbl" class="display nowrap" cellspacing="0" width="100%">
<thead>
<tr>
<th data-field="ID">ID</th>
<th data-field="Name">Name</th>
<th data-formatter="operateFormatter" data-events="operateEvents"></th>
</tr>           
</thead>

<tr data-index="0"><td class="sorting_asc" style="">1</td><td class="sorting" style="">asadasd</td><td class="sorting" style="">-</td></tr>
<tr data-index="1"><td class="sorting_asc" style="">2</td><td class="sorting" style="">qwqweqwe</td><td class="sorting" style="">-</td></tr>
</table>
这将始终仅导出2行。不管我用javascript向表中添加了多少

删除了克隆的东西,因为那不是我真正要做的

我使用ajax填充表:

function Load_ObjectList() {
    var url = urlService + "/TESTLoadAgencies/0";
    var EmpCode = sessionStorage['EmpCode']
    $.ajax({
        type: 'GET',
        contentType: "application/json; charset=utf-8",
        url: url,
        dataType: "json",
        async: true,
        crossDomain: true,
        cache: false,
        data: "{\"Empcode\":\"" + EmpCode + "\"}",
        success: function (response) {
            if (response.Status == "0") {

                if (response.list != null) {
                    objDataAll = response.list;
                    $('#tbl').bootstrapTable('destroy');
                    $('#tbl').bootstrapTable({

                        data: objDataAll,
                        escape: 'false'
                    });
                }

            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(jqXHR);
        }
    });
}
调用此函数后,我添加了按钮。当我按下按钮时,0行被复制


我遗漏了什么?

它只导出您在表中手动添加的两行,因为您在初始化datatable后克隆最后一行。你应该提前做

如果希望最后一行位于导出的文件中,请首先克隆该行,然后按如下方式初始化数据表:

    var $tableBody = $('#tbl').find("tbody"),
        $trLast = $tableBody.find("tr:last"),
        $trNew = $trLast.clone();
    $trLast.after($trNew);

    $('#tbl').DataTable( {
        dom: 'Bfrtip',
        buttons: [
            'copy', 'csv', 'excel', 'pdf', 'print'
        ]
    } );

这确实有效,所以谢谢。但是我用ajax获取数据,即使在之后添加按钮,它也不起作用
    var $tableBody = $('#tbl').find("tbody"),
        $trLast = $tableBody.find("tr:last"),
        $trNew = $trLast.clone();
    $trLast.after($trNew);

    $('#tbl').DataTable( {
        dom: 'Bfrtip',
        buttons: [
            'copy', 'csv', 'excel', 'pdf', 'print'
        ]
    } );