我正在使用Bootstrap表格创建类似电子表格的应用程序。用户可以切换列可见性、添加/删除列、调整大小等。
当用户选择调整列的大小或添加新列时,我需要让表格能够水平滚动,但Bootstrap会尝试将表格适应父容器大小。以下是基本的Bootstrap表格:
在这个 fiddle 中演示了: https://jsfiddle.net/xc0v6gkk/1/ 在调整大小时,您可以看到未被调整大小的表头变小以适应调整大小的列的宽度增加。有没有办法强制那些列保持相同的宽度,并强制表格扩展到比其父级更宽,从而在此过程中显示水平滚动条?
当您添加足够多的列时,表格将超出其父级的边界,但不再可以调整大小。
我已经尝试在调整大小时检查宽度并在表格达到一定宽度时增加 div 的宽度,但是随着 div 宽度的增加,仍然无法使列进一步向右拖动。
当用户选择调整列的大小或添加新列时,我需要让表格能够水平滚动,但Bootstrap会尝试将表格适应父容器大小。以下是基本的Bootstrap表格:
<div class="wrapper">
<table id="grid" class="table">
<thead>
<tr>
<th>One</th>
<th>Two</th>
<th>Three</th>
</tr>
</thead>
<tbody>
<tr>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
</tbody>
</table>
</div>
以下是调整大小的代码(由SO上的user686605提供):
$(function() {
var pressed = false;
var start = undefined;
var startX, startWidth;
$("#grid").on('mousedown', 'th', function(e) {
start = $(this);
pressed = true;
startX = e.pageX;
startWidth = $(start).width();
$(start).addClass("resizing");
});
$(document).mousemove(function(e) {
if ( pressed ) {
$(start).width(startWidth+(e.pageX-startX));
}
});
$(document).mouseup(function(e) {
if ( pressed ) {
pressed = false;
}
});
});
在这个 fiddle 中演示了: https://jsfiddle.net/xc0v6gkk/1/ 在调整大小时,您可以看到未被调整大小的表头变小以适应调整大小的列的宽度增加。有没有办法强制那些列保持相同的宽度,并强制表格扩展到比其父级更宽,从而在此过程中显示水平滚动条?
当您添加足够多的列时,表格将超出其父级的边界,但不再可以调整大小。
我已经尝试在调整大小时检查宽度并在表格达到一定宽度时增加 div 的宽度,但是随着 div 宽度的增加,仍然无法使列进一步向右拖动。
$(document).mousemove(function(e) {
if (pressed) {
$(start).width(startWidth + (e.pageX - startX));
var docWidth = $('.wrapper').width(),
gridWidth = $('#grid').width();
if (docWidth - gridWidth == 15) {
$('.wrapper').width(docWidth + 100);
}
}
});
编辑
我认为了解为什么在表格开始溢出时调整大小停止工作很重要。调整大小过程有点棘手,但这是可以调整的。我只是不明白为什么当表格溢出时调整大小会停止工作。