【问题标题】:Tabulator table not view properly制表器表格无法正确查看
【发布时间】:2019-01-11 02:51:25
【问题描述】:

我有一个按钮,单击按钮时将显示表格(制表符),但问题是单击按钮时,表格无法正确显示,表格是视图但内容未显示,我需要触发操作,例如调整窗口大小或按 F12 显示内容。

单击按钮时,不显示任何内容

当我按 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

谁能告诉我为什么会这样?

【问题讨论】:

  • JSfiddle 和 SO 代码 sn-p 似乎在这里按预期工作。
  • @visibleman 先生,您使用什么浏览器?我检查了 mozilla 和 google chrome 仍然有这个问题。
  • Windows 上的 Google Chrome 版本 71.0.3578.98(官方构建)(64 位)
  • 我在 chrome 和 opera 中看到它正确,我在 firefox 和 edge 看到你的问题,所以似乎与浏览器相关
  • 想想它在 html 中设置 display 为 none 的部分

标签: javascript jquery html tabulator


【解决方案1】:

这可能是因为您在隐藏表格时创建表格。 Tabulator 需要在绘制时可见,因为 Virtual DOM 需要计算组成表格的元素的长度以正确布局表格。 DOM 元素在第一次可见之前是没有维度的,这可能会导致表中的某些损坏。

解决这个问题的最简单方法是在表格可见后立即调用重绘函数。

table.redraw(true);

Tabulator 网站上的Quickstart Guide 详细介绍了该主题。

它在 Chrome 中没有发生的原因是因为 chrome 实现了 ES8 ResizeObserver 功能,制表器可以使用该功能来确定表格何时改变形状或变为可见。此功能在其他浏览器中尚不可用。

【讨论】:

  • 嗨,奥利感谢您的回复,但我仍然遇到了问题。当我尝试使用$('#example-table').redraw(true) 重绘时,标题仍然丢失,我得到了这个响应TypeError: $(...).redraw is not a function。已经包含这样的 jquery 包装器 imgur.com/a/2lU6zU0
  • 第一次加载页面时,我在jquery_wrapper.min.js:2:190 上也收到了TypeError: t.widget is not a function。我错了包含文件吗?或订购文件?
  • 您已经使用非 jQuery 方法声明了您的表,然后您不能尝试使用不起作用的 jQuery 选择器访问它。您必须在创建表格时调用分配给表格的表格变量的重绘函数
  • 如何尝试使用 jquery 方法声明的表?我正在尝试的是$("#example-table").tabulator({ //table setup options }); 并收到此错误:TypeError: $(...).tabulator is not a function,你能给我参考或示例吗?
  • 先生,请在here查看我的新问题
【解决方案2】:

我猜table.redraw(true); 适用于制表器 4.0 及更高版本,如果您的制表器版本较低,请使用table.redraw();。 我也遇到过这种情况,在升级到第 4 版之前我使用了 tableRefernc.redraw() 方法并且效果很好,但是在升级到第 4 版后效果不佳,所以我将其更改为 tableRefernc.redraw(true) 并且效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2011-01-07
    相关资源
    最近更新 更多