【问题标题】:DataTable - Pagination and Filter don't work for JavaScript generated tableDataTable - 分页和过滤器不适用于 JavaScript 生成的表
【发布时间】:2014-11-05 15:21:10
【问题描述】:

我在 DataTables 中有 JavaScript 生成的表格,但分页和过滤器不显示(工作)。当我尝试使用 bFilterbPaginate 时,它没有帮助我。

JSFiddle

var keywords = [["dog", 2],["table", 3],["chair", 4],["dog", 2],["table", 3],["chair", 4], ["dog", 2],["table", 3],["chair", 4],["dog", 2],["table", 3],["chair", 4],["dog", 2],["table", 3],["chair", 4]];
    
    function buildKeywordTableString(keywords){
      
      var dataSet = new Array();
                
      for (var i = 0; i < keywords.length; i++){
          dataSet.push([keywords[i][0],keywords[i][1]]);    
            }
            
            var table =  $('<table cellpadding="0" cellspacing="0" border="0" class="display"></table>')
            .dataTable({
                "data": dataSet,
                "bFilter":true,
                "paging": true,
                "bPaginate":true,
                "columns": [
                    {"title": "Keyword"},
                    {"title": "F"}
                ]
            })[0].outerHTML;
            
            return table;
        }
    
    $("body").append(buildKeywordTableString(keywords));
    $("body").append(buildKeywordTableString(keywords));

【问题讨论】:

标签: javascript jquery datatables


【解决方案1】:

尝试先将表格插入 DOM,然后将其初始化为 DataTable。您还需要确保表格中也有一个有效的thead:

https://jsfiddle.net/u7yhx9fL/10/

var keywords = [["dog", 2],["table", 3],["chair", 4],["dog", 2],["table", 3],["chair", 4], ["dog", 2],["table", 3],["chair", 4],["dog", 2],["table", 3],["chair", 4],["dog", 2],["table", 3],["chair", 4]];
var id=0;

function buildKeywordTableString(keywords){

    var dataSet = new Array();
        
    for (var i = 0; i < keywords.length; i++){
      dataSet.push([keywords[i][0],keywords[i][1]]);    
    }
    
    var table =  '<table id="table' + id + '" cellpadding="0" cellspacing="0" border="0" class="display"><thead><tr><th>Keyword</th><th>F</th></tr></thead><tbody></tbody></table>';
    $('body').append(table);
    $('#table' + id).dataTable({
        "data": dataSet,
        "bFilter":true,
        "paging": true,
        "bPaginate":true
    });
    
    id++
}

buildKeywordTableString(keywords);
buildKeywordTableString(keywords);

【讨论】:

    【解决方案2】:

    将以下属性添加到您的表中:data-order='[[ 0, "desc" ]]',如果您想按降序排列结果,如果您希望按升序排列结果,您可以使用data-order='[[ 0, "aesc" ]]'

    例子:

    DataEntry.DataTable = $("#tblViewList").DataTable({
        "data": DataEntry.DataSet,
        "columns": [
            { "data" : "DomainName" },
            { "data" : "SystemName" },
            { "data" : "UserName" },
            { "data" : "Id-1" },
            { "data" : "Id-2" }
        ],
        order: [[ 0, "desc" ]],
        destroy: true
    });
    

    【讨论】:

    • 这并不能解决所问问题的问题,这只有助于排序,而不是分页和过滤器,这是所要求的。
    猜你喜欢
    • 2015-07-24
    • 2019-02-21
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多