【发布时间】:2011-10-15 19:38:38
【问题描述】:
我希望 jQuery 数据表能够像 VB 中的 datagrid 一样在第一列中自动创建行号列。
看起来像这样:
有人知道怎么做吗?
【问题讨论】:
-
你是如何加载数据表的?显示一些代码
-
您需要的只是计算结果(在 json 或数组中)然后迭代它以生成一个序列号并与其他结果数据一起构建它。
标签: jquery html datatables
我希望 jQuery 数据表能够像 VB 中的 datagrid 一样在第一列中自动创建行号列。
看起来像这样:
有人知道怎么做吗?
【问题讨论】:
标签: jquery html datatables
只需要写一个渲染函数:
{
"data": "id",
render: function (data, type, row, meta) {
return meta.row + meta.settings._iDisplayStart + 1;
}
}
【讨论】:
您只需在 aoColumns 中定义一个空列。
然后在 fnRowCallback 函数中,您只需按照自己的喜好编辑列。每次创建新行时都会运行此回调。
基本上,如果您的第一列有行号,您可以在 fnRowCallback 中执行此操作:
var index = iDisplayIndex +1;
$('td:eq(0)',nRow).html(index);
return nRow;
【讨论】:
正如我评论的那样,@Pehmolelu 和@Tao Wang 的回答对我来说都不是很好。我不得不接受 DataTables 的索引列的建议:https://datatables.net/examples/api/counter_columns.html
请注意,在我的情况下,即使列配置通过我的 webapp 服务器的 API 调用下降(有时我有行计数器,有时没有),在此计数器列之前有 3 个系统列,因此列索引为 3,但您需要根据需要对其进行调整。
t.on('order.dt search.dt', function () {
t.column(3, {search:'applied', order:'applied'}).nodes().each( function (cell, i) {
cell.innerHTML = i+1;
});
}).draw();
此外,如果您的解决方案不像我的那么复杂,上面的链接还显示了您如何以不可排序 + 不可搜索的方式添加该列(同样,您需要根据需要调整列索引):
var t = $('#example').DataTable({
"columnDefs": [{
"searchable": false,
"orderable": false,
"targets": 3
}],
"order": [[4, 'asc']]
});
您可能还想使用一个插件来代替您自己的代码。
【讨论】:
fnRowCallback 在配置中。 使用 iDisplayIndexFull 而不是 iDisplayIndex。否则显示显示表格的行(不分页)
$('#myTable').DataTable({
"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
$('td:eq(0)', nRow).html(iDisplayIndexFull +1);
}
});
【讨论】:
这是另一个适用于 Datatable 1.10 的新解决方案。
它通过排序、搜索和页面长度更改对我有用。这是我的解决方案:
在这里简单讨论:https://datatables.net/examples/api/counter_columns.html
$(document).ready(function() {
var t = $('#example').DataTable( {
"columnDefs": [ {
"searchable": false,
"orderable": false,
"targets": 0
} ],
"order": [[ 1, 'asc' ]]
} );
t.on( 'draw.dt', function () {
var PageInfo = $('#example').DataTable().page.info();
t.column(0, { page: 'current' }).nodes().each( function (cell, i) {
cell.innerHTML = i + 1 + PageInfo.start;
} );
} );
} );
【讨论】: