我一直在尝试使用https://yajrabox.com/docs/laravel-datatables/7.0软件包中的 laravel数据表来解决自定义文件名。
这是场景,
我有此屏幕快照,如您所见,其中有一些按钮,其中之一是 CSV 。从dataTables基础知识来看,当我单击它时,它将使用带有时间戳的默认表ID导出为带有filaname的csv。
对于项目要求,我还需要导出所有货件,这就是为什么上面有“导出”按钮并下拉两个选项的原因,当前过滤器和所有货件。并隐藏表格上方的按钮。
这是窍门。
我有用于下拉菜单的代码
<div class="dropdown">
<button class="btn dropdown-toggle export-csv" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Export
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="javascript:void(0)" data-table="{!! $dataTable->getTableAttributes()['id'] !!}" id="exportShipmentCSV_all"> CSV - All Shipments </a>
<a class="dropdown-item" href="javascript:void(0)" data-table="{!! $dataTable->getTableAttributes()['id'] !!}" id="exportShipmentCSV"> CSV - Current Filter </a>
</div>
</div>
和用于显示表格的代码
<div class="table-responsive m-t-10" style="min-height: 350px;padding-bottom: 20px;">
{!! $dataTable->table(['class' => 'table table-condensed dataTableBuilder', 'style' => 'width:100%;']) !!}
</div>
以及使用上面的下拉选项导出的这段代码
$('#exportShipmentCSV').on('click', function(event) {
event.preventDefault();
$('.buttons-csv').click();
});
$('#exportShipmentCSV_all').on('click', function (e) {
e.preventDefault();
var tableId = $(this).data('table');
var filtersId = "#" + tableId + "_filters";
$(filtersId + ' input').val("");
$(filtersId + ' select').val("");
$(filtersId + ' input[type="checkbox"]').val(1);
window.LaravelDataTables[tableId].draw();
$('#' + tableId).DataTable().search('').draw();
$( '.buttons-csv' ).click()
});
用于模拟隐藏按钮csv上的鼠标单击事件的$( '.buttons-csv' ).click()
。
我的问题,我需要根据选项重命名导出的表,当单击所有货件时,文件名应为 all-shipment-20180711 ,当我单击在当前过滤器上,文件名应为 shipment-filter-20180711 。
我一直在任何地方进行排序,搜索文档,找到示例,但是我找不到在给定的javascipt / Jquery代码中操纵它的方法。
该项目是用laravel编写的。有人遇到同样的问题吗?您是如何解决的?