Tabulator.js table 元素检索行的索引并用作其他图的控制元素

Tabulator.js table elements retrieve the index of the row and serve as a control element to other plots

我正在使用 tabulator 包 4.3.0 在网页上工作。包生成的 table 将成为其他几个地块的控制元素。为了实现这一点,我在定义 table 变量时添加了一个 dataFiltered 函数。但是我不想获取数据对象中的行顺序,而是想找到一种方法来获取过滤后的行的索引 table.

目前,我稍微搜索了一下手册,并编写了与此类似的代码:

dataFiltered: function(filters,rows){
console.log(rows[0]._row.data)
console.log(rows[0].getPosition(true));
}

但是getPosition 总是返回-1,表示在过滤table 中没有找到该行。我还生成了一个演示来显示 运行 函数时的真实情况。有了这个 link:https://jsfiddle.net/Binny92/3kbn8zet/53/.

如果有人能帮我解释一下如何获得过滤数据中行的真实索引,以便我可以相应地更新绘图以及为什么我总是得到 -1,我将不胜感激当运行这样写的代码。

此外,我想知道是否有一种方法可以在用户对 table 进行排序时也检索数据。遗憾的是,使用以下策略的代码没有按照我期望的方式工作,因为它没有对排序操作做出反应,并且在第一次加载页面时不会显示信息。

$('#trialTable').on('change',function(x){console.log("Yes")})

提前感谢您的帮助。

发生这种情况的原因是因为 dataFiltered 回调在行被过滤之后但在它们被布置之前被触发table,因此当您对它们调用 getPosition 函数时,它们不一定准备就绪。

您最好使用 renderComplete 回调,它也将处理 table 排序时的情况,这将更改行位置。

然后您可以使用 getRows 函数传入值 "active" 作为第一个扩充 return只有通过过滤器的行:

renderComplete: function(){
    var rows = table.getRows("active");
    console.log(rows[0].getPosition(true));
}

附带说明,我注意到您正在尝试访问 _row 属性 来访问行数据。按照惯例,下划线属性在 JavaScript 中被认为是私有的,不应访问,因为它会导致 unstable 系统行为。

Tabulator 在 Row Component 上具有广泛的功能集,可让您访问所需的任何内容。在访问行数据的情况下,有 getData 函数

var data = row.getData();