dt_tblOutForApproval.buttons.exportData()
- это не функция, которая экспортирует данные в файл, а функция, которая возвращает данные .
Что касается вашего вопроса,Два возможных способа сделать это:
- Поскольку DataTable не позволяет нам снова инициализировать параметры, мы можем удалить необработанную таблицу и создать новую таблицу.Но это неэффективный способ.
Второй подход заключается в удалении старой кнопки «Экспорт в Excel» и создании новой кнопки в соответствии с текущим режимом динамически .Поскольку будет состояние двух режимов (текущий и все), я создаю ExcelExportManager()
для управления текущим режимом (состоянием) :
// dt is an object created by `$('#example').DataTable({})`
function ExcelExportManager(dt){
function _createExportButtonOpt(pageOpt="current"){
return {
extend: 'excelHtml5',
text: 'export ' + pageOpt,
name : pageOpt, // button name
filename: function () { return 'AllLists_' + time; },
exportOptions: {
//columns: [0, 1, 2, 3, 4, 5, 6, 7],
modifier:{ page: pageOpt },
},
};
};
function _setModeAsCurrent(){
var current= dt.button().remove(0, "current:name");
var current= dt.button().remove(0, "all:name");
var current= dt.button().add(0, _createExportButtonOpt("current"));
}
function _setModeAsAll(){
var current= dt.button().remove(0, "current:name");
var current= dt.button().remove(0, "all:name");
var current= dt.button().add(0, _createExportButtonOpt("all"));
}
var mode = "current"; // initial value
Object.defineProperty(this,"exportMode",{
get:function(){ return pageMode; },
set:function(value){
switch(value.toLowerCase()){
case "current":
_setModeAsCurrent();
break;
case "all":
_setModeAsAll();
break;
default:
throw new Error("unsupported export mode");
}
mode = value;
},
});
};
// create an instance
var excelManager = new ExcelExportManager(dt_tblOutForApproval);
Таким образом, когда мыЧтобы изменить режим, мы могли бы просто установить свойство excelManager.exportMode
:
// a function that get current option selected by user
function getExportMode(){
return exportOption=$("#selectDataOption").children("option")
.filter(":selected")
.val();
}
// initialize
excelManager.exportMode = getExportMode();
// on change
$("#selectDataOption").change(function() { excelManager.exportMode = getExportMode(); });
Демонстрация:
![enter image description here](https://i.stack.imgur.com/WZOWX.gif)
Чтобы играть в онлайн, нажмите фрагмент кода запуска
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<link rel="stylesheet" type="text/css"
href="https://cdn.datatables.net/v/dt/jszip-2.5.0/dt-1.10.18/b-1.5.6/b-html5-1.5.6/datatables.min.css" />
<script type="text/javascript"
src="https://cdn.datatables.net/v/dt/jszip-2.5.0/dt-1.10.18/b-1.5.6/b-html5-1.5.6/datatables.min.js"></script>
<meta charset=utf-8 />
<title>DataTables - JS Bin</title>
</head>
<body>
<div class="container">
<table id="example" class="display nowrap" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
<tbody>
<tr>
<td>Tiger Nixon</td>
<td>System Architect</td>
<td>Edinburgh</td>
<td>61</td>
<td>2011/04/25</td>
<td>$3,120</td>
</tr>
<tr>
<td>Garrett Winters</td>
<td>Director</td>
<td>Edinburgh</td>
<td>63</td>
<td>2011/07/25</td>
<td>$5,300</td>
</tr>
<tr>
<td>Ashton Cox</td>
<td>
<123414124124.null@domain.com>
</td>
<td>San Francisco</td>
<td>66</td>
<td>2009/01/12</td>
<td>$4,800</td>
</tr>
<tr>
<td>Ashton Cox</td>
<td>
<123414124124.null@domain.com>
</td>
<td>San Francisco</td>
<td>66</td>
<td>2009/01/12</td>
<td>$4,800</td>
</tr>
<tr>
<td>Ashton Cox</td>
<td>
<123414124124.null@domain.com>
</td>
<td>San Francisco</td>
<td>66</td>
<td>2009/01/12</td>
<td>$4,800</td>
</tr>
<tr>
<td>Ashton Cox</td>
<td>
<123414124124.null@domain.com>
</td>
<td>San Francisco</td>
<td>66</td>
<td>2009/01/12</td>
<td>$4,800</td>
</tr>
<tr>
<td>Ashton Cox</td>
<td>
<123414124124.null@domain.com>
</td>
<td>San Francisco</td>
<td>66</td>
<td>2009/01/12</td>
<td>$4,800</td>
</tr>
<tr>
<td>Ashton Cox</td>
<td>
<123414124124.null@domain.com>
</td>
<td>San Francisco</td>
<td>66</td>
<td>2009/01/12</td>
<td>$4,800</td>
</tr>
</tbody>
</table>
</div>
<select class="form-control" id="selectDataOption">
<option value="current">Current page</option>
<option value="all">Entire table</option>
</select>
</body>
<script>
$(document).ready(function () {
var time = new Date();
var dt_tblOutForApproval = $('#example').DataTable({
dom: 'Bftrip',
paging: true,
pageLength: 5,
buttons: [ ]
});
// dt is an object created by `$('#example').DataTable({})`
function ExcelExportManager(dt){
function _createExportButtonOpt(pageOpt="current"){
return {
extend: 'excelHtml5',
text: 'export ' + pageOpt,
name : pageOpt, // button name
filename: function () { return 'AllLists_' + time; },
exportOptions: {
//columns: [0, 1, 2, 3, 4, 5, 6, 7],
modifier:{ page: pageOpt },
},
};
};
function _setModeAsCurrent(){
var current= dt.button().remove(0, "current:name");
var current= dt.button().remove(0, "all:name");
var current= dt.button().add(0, _createExportButtonOpt("current"));
}
function _setModeAsAll(){
var current= dt.button().remove(0, "current:name");
var current= dt.button().remove(0, "all:name");
var current= dt.button().add(0, _createExportButtonOpt("all"));
}
var mode = "current"; // initial value
Object.defineProperty(this,"exportMode",{
get:function(){ return pageMode; },
set:function(value){
switch(value.toLowerCase()){
case "current":
_setModeAsCurrent();
break;
case "all":
_setModeAsAll();
break;
default:
throw new Error("unsupported export mode");
}
mode = value;
},
});
};
function getExportMode(){
return exportOption=$("#selectDataOption").children("option")
.filter(":selected")
.val();
}
var excelManager = new ExcelExportManager(dt_tblOutForApproval);
// initialize
excelManager.exportMode = getExportMode();
// on change
$("#selectDataOption").change(function() { excelManager.exportMode = getExportMode(); });
});
</script>
</html>