首页 > 解决方案 > Html to DataTable -> 循环表的所有行,而不是仅循环当前页面中的行

问题描述

我的 asp.net-4.5 页面中有一个如下所示的数据表:

Name   City   Value  Action
A       B      10    delete
X       Y      10    delete
T       R      10    delete
ALL    ALL     30

HTML 表通过以下方式转换为这样的数据表$(#example).datatable()

单击“删除”链接时,相关行将被删除,并且包含 ALL 的行的值正在 javascript 中更新。所以在这里,如果我删除第一行,表格将如下所示,没有任何页面刷新。

Name   City   Value  Action
X       Y      10    delete
T       R      10    delete
ALL    ALL     20

这里的一个问题是具有 ALL TOTAL 的行可以在其他任何地方,它并不总是在表的末尾。用户可以通过单击列重新排序表。例如,如果单击 Value 列,则包含 ALL 的行将是第一行。

此时,我想定位该行所在的位置。为此,我有一个如下的 for 循环:

for (var i = 0, r; r = document.getElementById("example").rows[i]; i++) {
    if ($('#example').find("tr:eq(" + i + ")").find("td:eq(2)").html() == 'ALL') {
       locateALLrow = i;
       break;
   }
}

当只有 1 页数据(一页包括 10 行)时,上面的这个 for 循环非常有效。所以我的问题:

1 - 我如何也可以遍历位于其他页面中的其他行?上面的这个循环仅适用于前 10 行并停止。如何将其扩展到所有表?

2-是否有更好的方法来定位包括 ALL 的行的索引(作为名称列)。

任何意见,将不胜感激。谢谢!

编辑:尝试了如下循环,没有修复:

for (var i = 0; i<document.getElementById("example").getElementsByTagName("tr").length; i++) 
{...}

标签: javascriptjqueryhtmlasp.netdatatable

解决方案


1 - 我如何也可以遍历位于其他页面中的其他行?上面的这个循环仅适用于前 10 行并停止。如何将其扩展到所有表?

在使用分页时,不要遍历仅显示前 n 行数据的 html 表,而是尝试使用datatable API。您将能够使用它遍历完整的数据。 https://datatables.net/reference/api/rows().data()

2-是否有更好的方法来定位包括 ALL 的行的索引(作为名称列)。

同上。使用数据表API而不是循环通过当前 html 显示的数据。


推荐阅读