Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Datatables:使用行分组,如何获得每个分组行的计数?_Javascript_Jquery_Datatables - Fatal编程技术网

Javascript Datatables:使用行分组,如何获得每个分组行的计数?

Javascript Datatables:使用行分组,如何获得每个分组行的计数?,javascript,jquery,datatables,Javascript,Jquery,Datatables,我正在使用Datatables创建按数据分组的网格。我可以使用我的第一列对我的表进行分组 我想完成获取每个分组行的计数并写出分组行的计数,我该如何做呢 如果您看到下面的链接,则它们具有阴影分组行。我希望计数显示在分组文本的文本之后 谢谢。使用您链接的示例,用//记下我的评论: "drawCallback": function ( settings ) { var api = this.api(); var rows = api.rows( {page:'curr

我正在使用Datatables创建按数据分组的网格。我可以使用我的第一列对我的表进行分组

我想完成获取每个分组行的计数并写出分组行的计数,我该如何做呢

如果您看到下面的链接,则它们具有阴影分组行。我希望计数显示在分组文本的文本之后


谢谢。

使用您链接的示例,用//记下我的评论:

"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]
                );
            }
        }