jQuery DataTables - 了解数据的输入方式,mRender / mData ..?

时间:2014-07-30 01:37:54

标签: jquery-datatables

我正在努力掌握jQuery数据表(通过CDN的v1.10.1)以及当前版本中使用的约定。各种文档令人困惑/缺乏完整的'最好的例子,最坏的冲突。

  1. 请解释有关定义字段内容的当前(v1.10.1)最佳做法。 我看到很多关于列/ mData / mRender / mDataProp的信息,其中包括每个人的意思和/或每个人应该使用的时间超载(参见下面的研究'部分的示例) 。

  2. 其次,我对于使用日期和"设置" /"显示" /"过滤" /"排序& #34; (假设这是要采取的路线,使用mData / mRender)?

  3. 示例

    编辑:这是一个小提琴中的一些数据的例子:

    var massData = [
      { "Column1": "test1", "Timestamp": "Sun Jul 27 2014 14:42:20 GMT+0100 (GMT Standard Time)", "Date": "18/10/2012" }, 
      { "Column1": "test2", "Timestamp": "Mon Jul 28 2014 14:42:20 GMT+0100 (GMT Standard Time)", "Date": "18/10/2016" }, 
      { "Column1": "test3", "Timestamp": "Wed Jul 22 2014 14:42:20 GMT+0100 (GMT Standard Time)", "Date": "18/01/2012" }
    ];
    
    var keys = ["Column1", "Timestamp", "Date"];
    var columns = [];
    for (var keyIndex = 0; keyIndex < keys.length; keyIndex++) {
        columns.push({
            "title": keys[keyIndex],
            "data": keys[keyIndex],
            "defaultContent": ""
        });
    }
    
    
    $('#demo').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>');
    
    $('#example').dataTable({
        "data": massData,
            "deferRender": true,
            "scrollY": 400,
            "scrollX": true,
    
            "columns": columns
    });
    

    http://jsfiddle.net/2M97f/

    研究

    1. 我看到this question有代码使用mRender,虽然我的理解是过滤/排序会使用实际数据

    2. 我看到this examplethis documentation使用aoColumnDefs,aTargets和mData ..?

    3. This question回复&#34;使用呈现的文本&#34;进行过滤,但使用aoColumnDefs,mDataProp和&#39; renderDate()&#39;功能,但不使用mRender

    4. mRendermData的文档表明mRender依赖于mData ..

    5. 其他文档建议弃用fnRender / bUseRendered

1 个答案:

答案 0 :(得分:2)

首先,您正在查看以前版本的示例(显然基于匈牙利表示法)所以任何使用mData的示例现在都可以使用,但是一旦删除旧版支持就可能无法使用。虽然它们可以让您了解方向,但在旧API中查找方法然后期望它们按1.10原样工作是很危险的。有一个version converter document有助于理解新旧之间的等价物。

我的偏好是使用this example使用“columns”定义来轻松指定数据字段。您还可以快速轻松地为每个列定义内容,例如可搜索,标题,可见等。请参阅其他API。

因此,我的代码中的数据表示例如下所示:

$('#example').DataTable( {
    data: data,
    columns: [
        { data: 'keyoffield1', title:'name title', visible:'false' },
        { data: 'keyoffield2', title:'position title' },
        { data: 'keyoffield3', title:'salary title here' },
        { data: 'keyoffield4', title:'office title here' }
    ]
} );

至于排序,它设置为您开箱即可识别日期字段,如您在示例中所示(单击标题以更改排序)但是,如果要设置默认排序,例如asc, desc等,这很容易用columns.sort完成,你会在API中看到。有一个simple plugin可以增强对字段的排序,这些字段可能无法以构建DataTables的方式进行格式化。

fnRender走了,closest equivalents are explained here。如果你忽略这些例子以及删除它时发生的抱怨,很容易看出Allan如何继续使用像column.render这样的新方法。