DataTables - 自定义 div 使其可拖动导致长度菜单消失
DataTables - Custom div to make it draggable causes length menu disappear
我正在使用显示大量数据的服务器端 DataTable (1.10.21),因此我需要使其可 x 拖动以正确显示所有结果。
我找到了一些可以完成工作但使长度菜单 select 消失的选项(select,您可以在其中选择每页要显示的记录数)。
我尝试添加选项以使其在文档和一些论坛之后再次可见,但没有结果。
如果我注释掉 x-draggable 部分,则长度菜单会再次恢复生机。
任何帮助,将不胜感激。
这是我的 DataTable 脚本:
// render DataTable
var dataTable = $('#data_table').DataTable( {
// X-DRAGGABLE PART
// Create a container div with box and drag as classes
dom: "Bfr<'box drag't>ip",
initComplete: function () {
// Draggable snippet
mx = 0;
$(".drag").on({
mousemove: function(e) {
var mx2 = e.pageX - this.offsetLeft;
if(mx) this.scrollLeft = this.sx + mx - mx2;
},
mousedown: function(e) {
this.sx = this.scrollLeft;
mx = e.pageX - this.offsetLeft;
}
});
$(document).on("mouseup", function(){
mx = 0;
});
},
"processing": true,
"serverSide": true,
"oLanguage": {
"sUrl": "datatables/italian.txt",
},
"ajax": {
"url":"datatables/extraction.php",
"data": function ( d ) {
return $.extend( {}, d, {
"filter": $('#filter_status').val(),
"type": $('#filter_type').val(),
"cat": $('#filter_cat').val(),
"tag": tag,
} );
}
// END X-DRAGGABLE PART
},
"columnDefs": [
{ className: "text-center", "targets": [ 3,4,8,9,10 ] },
{ className: "nowrap", "targets": [ 8,9 ] },
{ "orderable": false, "targets": [ 0,7,10 ] },
{ "width": "30px", "targets": 0 },
],
order: [[1, 'desc']],
...other stuff...
}); // END DATATABLE
以下是插件如何在 table 顶部呈现 div,其中 select 应该与 X-Draggable 部分一起使用和不使用 X-Draggable 部分。
没有:
<div class="row">
<div class="col-sm-12 col-md-6">
<div class="dataTables_length" id="data_table_length">
<label>Visualizza
<select name="data_table_length" aria-controls="data_table" class="custom-select custom-select-sm form-control form-control-sm">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select> elementi
</label>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div id="data_table_filter" class="dataTables_filter">
<label>Cerca:<input type="search" class="form-control form-control-sm" placeholder="" aria-controls="data_table"></label>
</div>
</div>
</div>
与:
<div id="data_table_filter" class="dataTables_filter">
<label>Cerca:<input type="search" class="form-control form-control-sm" placeholder="" aria-controls="data_table"></label>
</div>
我放弃后偶然发现了答案。
一切都是由排除页面长度按钮的“dom”属性的定义引起的。
所以这个:
dom: "Bfr<'box drag't>ip",
必须改成:
dom: "Blfr<'box drag't>ip",
刚刚添加了一个“l”,如此处的 Datatables 文档所示:
https://datatables.net/reference/option/dom
我正在使用显示大量数据的服务器端 DataTable (1.10.21),因此我需要使其可 x 拖动以正确显示所有结果。 我找到了一些可以完成工作但使长度菜单 select 消失的选项(select,您可以在其中选择每页要显示的记录数)。 我尝试添加选项以使其在文档和一些论坛之后再次可见,但没有结果。 如果我注释掉 x-draggable 部分,则长度菜单会再次恢复生机。 任何帮助,将不胜感激。 这是我的 DataTable 脚本:
// render DataTable
var dataTable = $('#data_table').DataTable( {
// X-DRAGGABLE PART
// Create a container div with box and drag as classes
dom: "Bfr<'box drag't>ip",
initComplete: function () {
// Draggable snippet
mx = 0;
$(".drag").on({
mousemove: function(e) {
var mx2 = e.pageX - this.offsetLeft;
if(mx) this.scrollLeft = this.sx + mx - mx2;
},
mousedown: function(e) {
this.sx = this.scrollLeft;
mx = e.pageX - this.offsetLeft;
}
});
$(document).on("mouseup", function(){
mx = 0;
});
},
"processing": true,
"serverSide": true,
"oLanguage": {
"sUrl": "datatables/italian.txt",
},
"ajax": {
"url":"datatables/extraction.php",
"data": function ( d ) {
return $.extend( {}, d, {
"filter": $('#filter_status').val(),
"type": $('#filter_type').val(),
"cat": $('#filter_cat').val(),
"tag": tag,
} );
}
// END X-DRAGGABLE PART
},
"columnDefs": [
{ className: "text-center", "targets": [ 3,4,8,9,10 ] },
{ className: "nowrap", "targets": [ 8,9 ] },
{ "orderable": false, "targets": [ 0,7,10 ] },
{ "width": "30px", "targets": 0 },
],
order: [[1, 'desc']],
...other stuff...
}); // END DATATABLE
以下是插件如何在 table 顶部呈现 div,其中 select 应该与 X-Draggable 部分一起使用和不使用 X-Draggable 部分。
没有:
<div class="row">
<div class="col-sm-12 col-md-6">
<div class="dataTables_length" id="data_table_length">
<label>Visualizza
<select name="data_table_length" aria-controls="data_table" class="custom-select custom-select-sm form-control form-control-sm">
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
<option value="100">100</option>
</select> elementi
</label>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div id="data_table_filter" class="dataTables_filter">
<label>Cerca:<input type="search" class="form-control form-control-sm" placeholder="" aria-controls="data_table"></label>
</div>
</div>
</div>
与:
<div id="data_table_filter" class="dataTables_filter">
<label>Cerca:<input type="search" class="form-control form-control-sm" placeholder="" aria-controls="data_table"></label>
</div>
我放弃后偶然发现了答案。 一切都是由排除页面长度按钮的“dom”属性的定义引起的。 所以这个:
dom: "Bfr<'box drag't>ip",
必须改成:
dom: "Blfr<'box drag't>ip",
刚刚添加了一个“l”,如此处的 Datatables 文档所示: https://datatables.net/reference/option/dom