单击按钮时我有一个按钮将显示表格(制表器),但问题是单击按钮时,表格无法正确显示,表格为视图,但内容未显示,我需要触发操作,例如调整大小窗口或按F12键显示内容。
当我尝试在jsfiddle中测试时,显示了标头,但没有显示内容(需要调整窗口大小以显示数据)
我尝试过的是这样的:
$(document).on('click', '#testing', function(){
$('#example-table').show();
});
//define some sample data
var tabledata = [
{id:1, name:"Oli Bob", age:"12", col:"red", dob:""},
{id:2, name:"Mary May", age:"1", col:"blue", dob:"14/05/1982"},
{id:3, name:"Christine Lobowski", age:"42", col:"green", dob:"22/05/1982"},
{id:4, name:"Brendon Philips", age:"125", col:"orange", dob:"01/08/1980"},
{id:5, name:"Margret Marmajuke", age:"16", col:"yellow", dob:"31/01/1999"},
];
//create Tabulator on DOM element with id "example-table"
var table = new Tabulator("#example-table", {
height:205, // set height of table (in CSS or here), this enables the Virtual DOM and improves render speed dramatically (can be any valid css height value)
data:tabledata, //assign data to table
layout:"fitColumns", //fit columns to width of table (optional)
columns:[ //Define Table Columns
{title:"Name", field:"name", width:150},
{title:"Age", field:"age", align:"left", formatter:"progress"},
{title:"Favourite Color", field:"col"},
{title:"Date Of Birth", field:"dob", sorter:"date", align:"center"},
],
rowClick:function(e, row){ //trigger an alert message when the row is clicked
alert("Row " + row.getData().id + " Clicked!!!!");
},
});
<link href="https://unpkg.com/tabulator-tables@4.1.4/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.1.4/dist/js/tabulator.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<button id='testing'>Click this button !!</button>
<div id="example-table" style='display:none'></div>
您也可以在jsfiddle中签入,请选中here
有人可以告诉我为什么会发生吗?
答案 0 :(得分:3)
这可能是因为隐藏表时正在创建表。制表符在绘制时必须是可见的,因为虚拟DOM需要计算组成表的元素的长度才能正确地布局表。 DOM元素在首次显示出来之前没有尺寸,这可能导致表中的某些损坏。
最简单的方法是在表可见后立即在表上调用重绘函数。
table.redraw(true);
制表器网站上的Quickstart Guide中详细介绍了此主题。
它在Chrome中没有发生的原因是因为chrome实现了ES8 ResizeObserver功能,制表符可以用来确定表格何时更改形状或变得可见。其他浏览器尚不提供此功能。
答案 1 :(得分:0)
我猜想table.redraw(true);
适用于Tabulator 4.0及更高版本,以防您使用Taber的较低版本使用table.redraw();
。
我也遇到了这种情况,在升级到版本4之前,我已经使用过tableRefernc.redraw()
方法,并且效果很好,但是在升级到版本4之后,它却无法正常工作,因此我将其更改为tableRefernc.redraw(true)
,并且效果很好。