Javascript Datatables:使用行分组,如何获得每个分组行的计数?
我正在使用Datatables创建按数据分组的网格。我可以使用我的第一列对我的表进行分组 我想完成获取每个分组行的计数并写出分组行的计数,我该如何做呢 如果您看到下面的链接,则它们具有阴影分组行。我希望计数显示在分组文本的文本之后Javascript Datatables:使用行分组,如何获得每个分组行的计数?,javascript,jquery,datatables,Javascript,Jquery,Datatables,我正在使用Datatables创建按数据分组的网格。我可以使用我的第一列对我的表进行分组 我想完成获取每个分组行的计数并写出分组行的计数,我该如何做呢 如果您看到下面的链接,则它们具有阴影分组行。我希望计数显示在分组文本的文本之后 谢谢。使用您链接的示例,用//记下我的评论: "drawCallback": function ( settings ) { var api = this.api(); var rows = api.rows( {page:'curr
谢谢。使用您链接的示例,用//记下我的评论:
"drawCallback": function ( settings ) {
var api = this.api();
var rows = api.rows( {page:'current'} ).nodes();
var last=null;
api.column(2, {page:'current'} ).data().each( function ( group, i ) {
//Create vars with each element you want to sum here
if ( last !== group ) {
$(rows).eq( i ).before(
//Get row data here, sum it in vars to display
'<tr class="sum group"><td>'+SumCol1+'</td><td>'+SumCol2+'</td>
//End sum row
'<tr class="group"><td colspan="5">'+group+'</td></tr>'
);
last = group;
//Don't forget to clear your sum vars at the end of each loop!
}
} );
}
“drawCallback”:函数(设置){
var api=this.api();
var rows=api.rows({page:'current'}).nodes();
var last=null;
列(2,{page:'current'}).data().each(函数(组,i){
//使用要在此处求和的每个元素创建变量
如果(最后!==组){
$(行).eq(i).之前(
//在此处获取行数据,并将其以VAR进行求和以显示
''+SumCol1+''+SumCol2+'
//结束和行
''+组+''
);
last=组;
//不要忘记在每个循环结束时清除求和变量!
}
} );
}
您可以通过rowGroup属性执行此操作:
rowGroup: {dataSrc: 'Your column name or index',
startRender: function (rows, group) {
return group + ' (' + rows.count() + ' rows)';
}
}
这可以通过在drawCallBack函数中添加for循环来实现。关于drawCallBack函数,请参阅。请注意,我使用的是传统的dataTable函数,即fnDrawCallBack,将其替换为最新的等效函数
fnDrawCallback: function(settings) {
var api = this.api();
var rows = api.rows({ page: "current" }).nodes();
var last = null;
var storedIndexArray = [];
api.column(0, { page: "current" })
.data()
.each((group, i) => {
if (last !== group) {
storedIndexArray.push(i);
$(rows)
.eq(i)
.before(
'<tr class="group"><td colspan="4">' +
group +
"<span class='group-count'></span></td></tr>"
);
last = group;
}
});
storedIndexArray.push(
api.column(0, { page: "current" }).data().length
);
for (let i = 0; i < storedIndexArray.length - 1; i++) {
let element = $(".group-count")[i];
$(element).text(
storedIndexArray[i + 1] - storedIndexArray[i]
);
}
}
fnDrawCallback:函数(设置){
var api=this.api();
var rows=api.rows({page:“current”}).nodes();
var last=null;
var storedIndexArray=[];
列(0,{page:“current”})
.data()
.每个((组,i)=>{
如果(最后!==组){
storedIndexArray.push(i);
$(行)
.eq(i)
.以前(
'' +
团体+
""
);
last=组;
}
});
storedIndexArray.push(
列(0,{page:“current”}).data().length
);
for(设i=0;i
如果您使用多行组,则在所有子级别组上写入相同的编号!。
fnDrawCallback: function(settings) {
var api = this.api();
var rows = api.rows({ page: "current" }).nodes();
var last = null;
var storedIndexArray = [];
api.column(0, { page: "current" })
.data()
.each((group, i) => {
if (last !== group) {
storedIndexArray.push(i);
$(rows)
.eq(i)
.before(
'<tr class="group"><td colspan="4">' +
group +
"<span class='group-count'></span></td></tr>"
);
last = group;
}
});
storedIndexArray.push(
api.column(0, { page: "current" }).data().length
);
for (let i = 0; i < storedIndexArray.length - 1; i++) {
let element = $(".group-count")[i];
$(element).text(
storedIndexArray[i + 1] - storedIndexArray[i]
);
}
}