Datatables 在 DataTables 创建函数之外只有 10 行可访问

Posted

技术标签:

【中文标题】Datatables 在 DataTables 创建函数之外只有 10 行可访问【英文标题】:Datatables has only 10 rows accessible outside the DataTables creation function 【发布时间】:2019-02-06 13:40:30 【问题描述】:

我正在使用 Django,在我的一个模板中,我使用数据表 (1.10.19) 来显示我的表数据。 这就是我的代码的样子:

$(document).ready( function () 
        table = $('#mytable').DataTable(
            "pagingType": "full_numbers",
            data: dataSet,
            columns: [
                 title: "Naslov zahtjeva" ,
                 title: "Datum slanja" ,
                 title: "Status" ,
                 title: "Rok Izvršenja." ,
                 title: "Id zahtjeva" ,
            ],
            "fnCreatedRow": function(row, data, index)
                $(row).addClass("clickable-row");
                $(row).attr('data-href', data[4]);
                $(row).addClass("table_row_point");
            ,
        );

问题出现在行 -> $(row).attr('data-href', data[4]); 我有一个不同的函数,它应该使用“data-href”属性中的“ID”来访问另一个这样的页面

jQuery(document).ready(function($) 
        $(".clickable-row").click(function() 
            window.location = $(this).data("href");
        );
    );

问题是它在前 10 行中运行良好,当我尝试 'console.log(this);' 时我得到

只针对前10行,它的行为就像其他3000甚至不存在一样,我相信它连接到出现的10行的默认值,但对我来说数据正常显示没有意义, 但 'tr' 元素并不是对所有人都存在,而是对其中的 10 个。

注意:当我将此函数放入 DataTable 创建代码(第一个 sn-p)时,它会显示所有 tr 元素

$('#mytable tbody').on( 'click', 'tr', function () console.log( this ); );

如果有人有任何想法,将不胜感激

【问题讨论】:

它肯定连接到“pageLength”属性,仅将它加载的数量呈现到DataTables创建函数之外的可访问代码中...... 既然您已经了解了事件委托,并且您知道每个 DataTable“页面”仅呈现 pageLength 行数...您的问题到底是什么? 那么什么不起作用?当您移动到第二页并创建下一行时,是否不会调用该函数?我的印象是,除非您专门将延迟渲染选项设置为 false DT 应该预先创建所有行(使用 ajax 或 JS 数据源时)datatables.net/reference/option/deferRender。大概虽然这没有发生 this CodePen 没有明显问题,我在其中“模拟”了您的 3000 行数据。 【参考方案1】:

fnCreatedRow 函数在每次 datatable 在 dom 中创建 <tr> 元素时执行。由于您启用了分页,因此函数仅在当时创建的 <tr> 元素上运行。如果您转到下一页,您将看到控制台打印下一组行。

顺便说一句,我认为createdRow 比旧的fnCreatedRow 命名约定更受欢迎。 https://datatables.net/reference/option/createdRow

【讨论】:

我尝试了其中的bot,但两者都不做jack。我不确定你的意思,因为如果我运行它(同时使用 createdRow 或 fnCreatedRow),它会一次记录所有行,但是当我在控制台中更改页面时没有任何反应。 我不确定你的问题是什么。如果您已设置在一个页面中一次显示 10 行,则数据表将对显示的行仅执行 10 次 fnCreatedRow。你想达到什么目标?

以上是关于Datatables 在 DataTables 创建函数之外只有 10 行可访问的主要内容,如果未能解决你的问题,请参考以下文章

dataTables 插件学习整理

DataTables 警告:table id=dataTables - Ajax 错误。 404 未找到

找不到文件'dataTables/jquery.dataTables' Rails 4

DataTables:如何绕过过滤规则?

表格插件之一datatables

如何在dataTables中将数字数据右对齐