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 警告:table id=dataTables - Ajax 错误。 404 未找到