datatable jquery-表头宽度与正文宽度不对齐
我正在使用jQuery数据表。运行应用程序时,标题宽度与正文宽度不对齐。但当我点击标题时,它与主体宽度对齐,但即使如此,也有一些轻微的错位。这个问题只发生在IE中 这是加载页面时的外观: 单击标题后: 我的数据表代码:datatable jquery-表头宽度与正文宽度不对齐,jquery,datatables,alignment,Jquery,Datatables,Alignment,我正在使用jQuery数据表。运行应用程序时,标题宽度与正文宽度不对齐。但当我点击标题时,它与主体宽度对齐,但即使如此,也有一些轻微的错位。这个问题只发生在IE中 这是加载页面时的外观: 单击标题后: 我的数据表代码: $("#rates").dataTable({ "bPaginate": false, "sScrollY": "250px", "bAutoWidth": false, "bScrollCollapse": true, "bLeng
$("#rates").dataTable({
"bPaginate": false,
"sScrollY": "250px",
"bAutoWidth": false,
"bScrollCollapse": true,
"bLengthChange": false,
"bFilter": false,
"sDom": '<"top">rt<"bottom"flp><"clear">',
"aoColumns": [{
"bSortable": false
},
null,
null,
null,
null
]
});
$(“#费率”).dataTable({
“bPaginate”:错误,
“sScrollY”:“250px”,
“bAutoWidth”:假,
“崩溃”:没错,
“bLengthChange”:false,
“bFilter”:错误,
“sDom”:“rt”,
“aoColumns”:[{
“可移植”:false
},
无效的
无效的
无效的
无效的
]
});
rates
是我的表id。有人能帮我吗?提前感谢。标题上的一些简单css应该可以帮你做到这一点
#rates_info, #rates_paginate
{
float: left;
width: 100%;
text-align: center;
}
我不能保证这会像现在一样有效,因为我还没有看到你的html,但请尝试一下,如果看不到,你可以发布你的html,我会更新它。$(“#rates”).dataTable({
$("#rates").dataTable({
"bPaginate": false,
"sScrollY": "250px",
"bAutoWidth": false,
"bScrollCollapse": true,
"bLengthChange": false,
"bFilter": false,
"sDom": '<"top">rt<"bottom"flp><"clear">',
"aoColumns": [{
"bSortable": false
},
null,
null,
null,
null
]}).fnAdjustColumnSizing( false );
“bPaginate”:错误,
“sScrollY”:“250px”,
“bAutoWidth”:假,
“崩溃”:没错,
“bLengthChange”:false,
“bFilter”:错误,
“sDom”:“rt”,
“aoColumns”:[{
“可移植”:false
},
无效的
无效的
无效的
无效的
]}).fn调整列大小(错误);
尝试在datatables调用结束时调用FNAjustColumnShizing(false)。修改了上面的代码
找到了解决方案:
添加了
表格布局:已修复表中的。并在IE模式下打开应用程序。我解决了这个问题,将“dataTable”表包装为div
,并使用溢出:auto
:
.dataTables_scroll
{
overflow:auto;
}
并在数据表
初始化后添加此JS:
jQuery('.dataTable').wrap('<div class="dataTables_scroll" />');
jQuery('.dataTable').wrap('');
不要使用sScrollX
或sScrollY
,删除它们并添加一个自己做同样事情的div
包装器。只需使用溢出自动和相对位置将表标记元素包装在div中即可。它将在chrome和IE8中工作。
我添加了高度400px,以便即使在重新加载数据后也保持表大小不变
table = $('<table cellpadding="0" cellspacing="0" border="0" class="display" id="datat"></table>').appendTo('#candidati').dataTable({
//"sScrollY": "400px",//NO MORE REQUIRED - SEE wrap BELOW
//"sScrollX": "100%",//NO MORE REQUIRED - SEE wrap BELOW
//"bScrollCollapse": true,//NO MORE REQUIRED - SEE wrap BELOW
//"bScrollAutoCss": true,//NO MORE REQUIRED - SEE wrap BELOW
"sAjaxSource": "datass.php",
"aoColumns": colf,
"bJQueryUI": true,
"sPaginationType": "two_button",
"bProcessing": true,
"bJQueryUI":true,
"bPaginate": true,
"table-layout": "fixed",
"fnServerData": function(sSource, aoData, fnCallback, oSettings) {
aoData.push({"name": "filters", "value": $.toJSON(getSearchFilters())});//inserisce i filtri
oSettings.jqXHR = $.ajax({
"dataType": 'JSON',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback
});
},
"fnRowCallback": function(nRow, aData, iDisplayIndex) {
$(nRow).click(function() {
$(".row_selected").removeClass("row_selected");
$(this).addClass("row_selected");
//mostra il detaglio
showDetail(aData.CandidateID);
});
},
"fnDrawCallback": function(oSettings) {
},
"aaSorting": [[1, 'asc']]
}).wrap("<div style='position:relative;overflow:auto;height:400px;'/>"); //correzione per il disallineamento dello header
table=$('').appendTo('#candidate').dataTable({
//“sScrollY”:“400px”,//不再需要-请参阅下面的换行
//“sScrollX”:“100%,//不需要更多信息-请参阅下面的换行
//“bScrollCollapse”:true,//不再需要-请参阅下面的换行
//“bScrollAutoCss”:true,//不再需要-请参阅下面的换行
“sAjaxSource”:“datass.php”,
“aoColumns”:colf,
“bJQueryUI”:没错,
“sPaginationType”:“两个按钮”,
“bProcessing”:正确,
“bJQueryUI”:没错,
“bPaginate”:对,
“表格布局”:“固定”,
“fnServerData”:函数(sSource、aoData、fnServerData回调、oSettings){
aoData.push({“name”:“filters”,“value”:$.toJSON(getSearchFilters())});//inserice i filter
oSettings.jqXHR=$.ajax({
“数据类型”:“JSON”,
“类型”:“职位”,
“url”:sSource,
“数据”:aoData,
"成功":
});
},
“fnRowCallback”:函数(nRow、aData、iDisplayIndex){
$(nRow)。单击(函数(){
$(“.row_selected”).removeClass(“row_selected”);
$(this).addClass(“选定行”);
//德塔格里奥酒店
展示详情(aData.CandidateID);
});
},
“fnDrawCallback”:函数(oSettings){
},
“aaSorting”:[[1,‘asc']]
}).wrap(“”)//每台柴油机的correzione柴油机
上述解决方案对我都不管用,但我最终找到了一个管用的解决方案
我的版本是由第三方CSS文件导致的,该文件将“框大小”设置为不同的值。我能够通过以下代码在不影响其他元素的情况下修复该问题:
$table.closest(".dataTables_wrapper").find("*").css("box-sizing","content-box").css("-moz-box-sizing","content-box");
希望这对别人有帮助 确保表格宽度为100%
然后“autoWidth”:true通过链接Mike Ramsey的答案,我最终发现该表在加载DOM之前就已经初始化了
为了解决这个问题,我将初始化函数放在以下位置:
document.addEventListener('DOMContentLoaded', function() {
InitTables();
}, false);
看。它可以通过只触发一次窗口滚动事件来解决。我也面临同样的问题。
我为dataTable添加了scrollX:true属性,它成功了。
无需更改datatable的CSS
jQuery('#myTable').DataTable({
"fixedHeader":true,
"scrollY":"450px",
"scrollX":true,
"paging": false,
"ordering": false,
"info": false,
"searching": false,
"scrollCollapse": true
});
我修好了,为我工作
var table = $('#example').DataTable();
$('#container').css( 'display', 'block' );
table.columns.adjust().draw();
或
参考资料:以上所有解决方案都不适用于我,因此我将发布我的解决方案:我将表加载到一个隐藏的div中,然后在构建表后显示该div。当我首先显示/取消隐藏div,然后在表可见的情况下构建表时,它工作了
因此DataTables无法在隐藏的div中调整列的大小,可能是因为当表被隐藏时,后端的列宽为0px。我知道这很旧,但我只是遇到了问题,没有找到很好的解决方案。因此,我决定使用一些js来获得滚动体的高度,与表的高度相比。如果scrollBody比表小,那么我将表的宽度增加15px以考虑滚动条。我也在“调整大小”事件上设置了此选项,以便在容器更改大小时可以使用:
const tableHeight = $('#' + this.options.id).height();
const scrollBodyHeight = $('#' + this.options.id).closest('.dataTables_scrollBody').height();
if (tableHeight > scrollBodyHeight) {
$('#' + this.options.id).closest('.dataTables_scrollBody').css({
width: "calc(100% + 15px)",
})
} else {
$('#' + this.options.id).closest('.dataTables_scrollBody').css({
width: "100%",
})
}
$('.DataTables\u sort\u wrapper')。触发器(“单击”) 不幸的是,这些解决方案都不适合我。也许,由于表的初始化不同,我们会得到不同的结果。有可能,这些解决方案中的一个会对某人起作用。不管怎么说,我想分享我的解决方案,以防有人仍然对这个问题感到困扰。虽然这有点粗糙,但对我来说很有效,因为我以后不会改变桌子的宽度
加载页面后,单击页眉,使其
const tableHeight = $('#' + this.options.id).height();
const scrollBodyHeight = $('#' + this.options.id).closest('.dataTables_scrollBody').height();
if (tableHeight > scrollBodyHeight) {
$('#' + this.options.id).closest('.dataTables_scrollBody').css({
width: "calc(100% + 15px)",
})
} else {
$('#' + this.options.id).closest('.dataTables_scrollBody').css({
width: "100%",
})
}
$('#myCollapsible').on('shown.bs.collapse', function () {
$($.fn.dataTable.tables(true)).DataTable()
.columns.adjust();
});
$('a[data-toggle="tab"]').on('shown.bs.tab', function(e){
$($.fn.dataTable.tables(true)).DataTable()
.columns.adjust();
});
initComplete () {
this.api (). columns (). header (). each ((el, i) => {
$ (el) .attr ('style', 'min-width: 160px;')
});
},
$(document).on( 'init.dt', function ( e, settings ) {
var api = new $.fn.dataTable.Api( settings );
window.setTimeout(function () {
api.table().columns.adjust().draw();
},1);
} );
otableCorreo = $("#indexTablaEnvios").DataTable({
"fnInitComplete": function (oSettings, json) {
$(otableCorreo.table().container()).addClass("tablaChildren");
},
});
.tablaChildren {
width: 97%;
}
// recalculate column widths, because they aren't recalculated when the table is hidden'
$('.homeTable').DataTable()
.columns.adjust()
.responsive.recalc();
$('#my_div').show();
$('#my_table').DataTable();
$('#modalCandidateAssessmentDetail').on('shown.bs.modal', function (e) {
});
setTimeout(function(){
var table = $('#exampleSummary').removeAttr('width').DataTable( {
scrollY: "300px",
scrollX: true,
scrollCollapse: true,
paging: true,
columnDefs: [
{ width: 200, targets: 0 }
],
fixedColumns: false
} );
}, 100);
$( window ).resize(function() {
var table = $('#tableId').DataTable();
$('#container').css( 'display', 'block' );
table.columns.adjust().draw();
});
setTimeout(function() {
//your datatable code
}, 1000);
$('#rates').DataTable({
"scrollX": true,
"sScrollXInner": "100%",
});
$('#DataTableID').DataTable({
//"scrollX": true,
"initComplete": function (settings, json) {
$("#DataTableID").wrap("<div style='overflow:auto; width:100%;position:relative;'></div>");
},
});
<style>
#data-table-basic_wrapper .dataTable, #data-table-basic_wrapper .dataTables_scrollHeadInner {
width: 100% !important;
}
</style>