【问题标题】:Tabulator: how can I get the index of recently added rows制表器:如何获取最近添加的行的索引
【发布时间】:2019-10-03 09:07:35
【问题描述】:

我有一个 Tabulator 表,我在其中添加新行(在顶部位置)

$("#add-row").click(function(){
    $.ajax({
      url: "row-edit.php", // add row into DB
      data: "typ=add",
      type: "POST",
      error: function(XMLHttpRequest, textStatus, error){
        alert("AJAX error: " + textStatus + "; " + error);
      }
    })
    table.addRow({});
});

我现在想检索这个新行的索引来更新单元格。

cellEdited:function(cell){
  //this is called whenever a cell's value is edited.
  var id = cell.getRow().getIndex(); // get indeox of updated row
  ...
}

但是,添加此行后,索引未定义。所以我想我需要重新加载数据,但我不确定最好的方法是什么。

我在table.addRow({}); 之前添加了这一行:

table.replaceData("refresh.php");

这通常有效,我会得到该行的索引。但是新添加的行会立即从屏幕上消失——我发现这是因为我正在使用 vaidators,现在在新行的一些空单元格上失败了。 如果我删除验证器,添加的行仍然可见并且可以成功更新。

还有其他方法可以获取新行的索引以允许更新吗? 我现在的计划 B 是将一些占位符值添加到添加的行中,以便验证器不会失败。但我更希望有一个新的空行,其中不包含任何数据。

【问题讨论】:

    标签: javascript tabulator


    【解决方案1】:

    从 sql 连接加载数据时,我遇到了同样的问题。当我单击插入行或更改其值时,插入行的索引未定义。

    我没有在 Ajax 上尝试过,但在 node.js 后端使用 SqlConnection

    什么对我有用:

    1. 当我调用我的方法来插入新行时,首先触发 sql 数据库创建一个新的空条目...可以说插入我的对象的所有值为 null 或“”,除了主键是自动递增的。

    2. 然后重新加载您的制表符表以直接从 sql 获取新行(我认为重新加载 ajax 应该与 refresh.php 相同)

    3. 现在,当您将使用制表符的回调 cellEdited:function(cell){} 时,您可以使用 row.getIndex(); 返回索引(在我的情况下 getIndex 是我的 sql 的行主键)

    还要记住,制表符有这些漂亮的方法:table.replaceData("/data.php") //load data from data/php via ajax request

    您可以找到有关此特定问题的更多信息here

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      addRow 函数返回一个用Row Component 解析新行的承诺。您可以在该行上调用您喜欢的任何函数来操作它,在这种情况下,getPosition 函数将返回它在表格中的位置:

      table.addRow({})
      .then((row) => {
          var position = row.getPosition(); //get position of row
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-23
        • 1970-01-01
        • 1970-01-01
        • 2017-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-31
        相关资源
        最近更新 更多