显示空行jQuery dataTables

时间:2013-08-23 13:37:09

标签: javascript jquery ajax datatables

我正在使用jQuery DataTables插件。我想知道是否有一种方法可以向表中添加空行,以便表格总是显示50行,天气是否存在这些行中的数据?

例如,如果我进行AJAX调用并返回5个条目,我希望能够显示45个空行。或者如果调用返回49个条目,我仍希望在表格底部显示1个空行。

4 个答案:

答案 0 :(得分:1)

使用ajax调用的结果填充数据源后,您可以计算源中元素的数量,如果它小于50,则可以向其添加一些空记录。

编辑:第二个想到它可能不是最好的主意,因为它会搞砸排序。

答案 1 :(得分:0)

很难知道没有代码片段和你正在做什么,但你可以在服务器或客户端修改它。

您可以强制调用在服务器上返回50行,无论填充了多少行,或者您可以接收响应,然后在客户端修改它。

答案 2 :(得分:0)

有人可能有更好的解决方案,但假设您至少有一个条目,这应该“有效”。

for (var i=numEntries; i < 50; i++) {
    $("#tableID tr:last").after('<tr><td>Empty Row</td></tr>');
}

JSFiddle:http://jsfiddle.net/yXvmX/2/

答案 3 :(得分:0)

我发现在这种情况下可以使用名为“drawCallback”的回调函数。 https://datatables.net/reference/option/drawCallback 每次dataTable重绘一个表页面内容就像你做的那样排序, 它将被称为。

$("#yourTable").DataTable({
                    "columns":columns,
                    "ajax": {
                        "url": url
                        "dataSrc" : function (json) {   return json;}
                    },
                    "searching": false ,
                    "pageLength": rowNumPerPage,
                    "lengthChange": false,
                    "autoWidth": false,
                    "order": [[ 0, "asc" ]],

                    "drawCallback": function( settings ) {
                        //for maintaining the same height every page, 
                        //add empty row to table 
                        var api = this.api();

                        var currentPageDataSet = api.rows( {page:'current'} ).data() ;
                        if(currentPageDataSet.length < rowNumPerPage){     
                            var $tbody = $('#yourTable tbody');
                            for(var i = 0; i< rowNumPerPage-currentPageDataSet.length; i++){
                                var isEven = (currentPageDataSet.length+(i+1))%2 === 0;
                                var $tr = (isEven)? $('<tr role="row" class="even"></tr>') : $('<tr role="row"  class="odd"></tr>');
                                for(var j=0; j< columns.length; j++){
                                    $tr.append('<td style="color:white;" >_</td>');
                                }
                                $tbody.append($tr);
                            }
                        }

                    }
                });

在这个回调函数中,我所做的是计算当前页面的行号 数据,如果行号小于最大页面行号,则我们追加空 行元素到tbody。