数据表:什么时候我使用mdata / mrender或data / render?

时间:2017-01-18 23:06:38

标签: datatables

我对datatable API很困惑 有时它使用mdata,mrender,有时它使用数据,渲染

我正在使用该片段:

{ mData: 'deadline', "title":"Deadline", "render": function(data, type, row) {
                var recurrence = row.rec_description;                    
                return sprintf("<i class='fa fa-calendar'></i> %s <div>(%s)</div>\
                <div><i class='fa fa-recycle'></i> Récurrence:%s</div>\
                ",
                    moment(data,'X').format('DD/MM/YYYY'),  moment(data,'X').locale('fr').fromNow(), recurrence);
            } },

哪个工作正常,但是对该列进行排序不起作用: 也许这是因为使用了“mData,render”?

截止日期是一个int(15),但看起来它按html内容排序。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

jQuery DataTables 1.9在选项名称中使用匈牙利表示法(mDatamRender),jQuery Datatables 1.10切换到驼峰表示法(datarender)但仍然支持选项名称来自1.9。

如果您正在使用jQuery DataTables 1.10,我建议切换到驼峰案例表示法,因为可以在下一个主要版本中删除对匈牙利表示法选项名称的支持。

为了能够按deadline排序,您需要重写render功能,如下所示。它仅在显示数据时生成HTML内容,否则对其进行排序则返回原始数据。

{ 
   "data": "deadline", 
   "title":"Deadline", 
   "render": function(data, type, row, meta) {
      if(type === "display"){
            var recurrence = row.rec_description;                    
            data = sprintf(
               "<i class='fa fa-calendar'></i> %s <div>(%s)</div>"
                  + "<div><i class='fa fa-recycle'></i> Récurrence:%s</div>",
               moment(data,'X').format('DD/MM/YYYY'),
               moment(data,'X').locale('fr').fromNow(), 
               recurrence
            );
      } 

      return data;
   }
},

有关详细信息,请参阅columns.render