检索Datatables中的指定行

时间:2016-04-21 12:40:21

标签: javascript datatables datatables-1.10

问题

有没有办法以编程方式只检索符合某些特定条件的行 - 例如具有特定索引的行?

API有一个方法 - rows(),可以通过提供selector-modifier参数来稍微操作结果。但是,使用它我最多可以使用当前表搜索,而不是自定义表。

问题

为了更好地理解,我将提供有关我想要实现的更多细节。

我正在使用Select extension。我想使用外部触发器一次选择一些行。现在我这样做:

myTable.rows().every(function () {
    // ...
    // Check if the row should be selected and if so:
    this.select();
    // ...
});

但是,这会导致在表上触发与所选行数相同数量的select事件。我有一个绑定到此事件的处理程序,它根据所选行执行对外部API的请求。由于我无法辨别哪个select是最后一个,因为事件的数量,我的处理程序最终会不必要地向外部API发送垃圾邮件。

解决方案

  1. 仅检索匹配的行并在其上使用rows().select()
  2. 我认为这是最好的解决方案,因为select事件只会被触发一次。但是,我不知道该怎么做 - 因此这个问题。

    1. 阻止处理程序调用外部API,直到选择过程完成。
    2. 我想到了两个hacky解决方案,我将其作为最后的手段使用:

      • 根本不使用avent处理程序,只需在rows().every()循环后调用API - 我仍然需要使用处理程序来处理手动行选择,但这可能会。

      • 遍历行两次 - 第一次检查哪一行是最后一行,然后禁用处理程序,执行第二次循环,实际选择行,并在选择最后一行之前启用处理程序

      我希望整个问题不会太混乱。要清楚 - 我想找到答案的是顶部的问题,用斜体字表示。

1 个答案:

答案 0 :(得分:1)

selector-modifier仅适用于您选择所有行的情况。它不是由选择器限制行。为此你可以使用行选择器,它更加灵活:

https://datatables.net/reference/type/row-selector

该页面上有几个示例,所以我不会在这里查看选项。

正如您所建议的那样,如果您使用此选择器然后在返回的行集上调用.select(),则回调将仅触发一次。