JavaScript:数据表服务器端处理 - 在显示之前更改值

时间:2015-10-02 07:43:48

标签: javascript jquery ajax datatables


为了在表格中显示我的数据,我使用dataTable插件。由于我有大量数据,我使用服务器端处理。我的问题是,我在获得的JSON中有一些数据字段,我想在表格中显示之前更改。

示例:我得到的值是,某些设备是否可用。这在数据库中写为“”,0或1,用于显示它我想将这些值转换为“是”或“否”或“N / A”。

要初始化表,我使用以下代码:

table = $('#table').DataTable({
    "ajax": "myurl",
    "sPaginationType": "full_numbers",
    "sAjaxDataProp":"",
    "deferRender": true,
    columns: [
    {data: 'attributes.0.value'},
    {data:'attributes.1.value'},
    {data:'attributes.2.value'},
    {data:'attributes.3.value'},
    {data:'attributes.4.value'}],
});

直接在数据数组中绑定conerting函数不起作用(如

{data: convert(attributes.0.value)},

datatable插件有一些参数,我试过,但我不确定,他们是否可以解决我的问题。这是插件文档中的一个示例:

 $('#example').dataTable( {
     "ajax": {
         "url": "data.json",
         "data": function ( d ) {
             d.extra_search = $('#extra').val();
         }
      }
 });


我可以使用数据参数来解决我的问题(当我尝试这个时,d总是空的)或者在将它们集成到表中之前还有其他可能性来改变我的值吗?

1 个答案:

答案 0 :(得分:4)

可以ajax.dataSrc函数中预处理JSON,但由于你真的需要修改值的显示方式,我会选择column rendering

columns: [
   { data: 'attributes.0.value',
     render: function(data, type, row) {
        switch(data) {
           case '0' : return 'No'; break;
           case '1' : return 'Yes'; break; 
           default : return 'N/A'; break;
        }
   },
   { data: 'attributes.1.value' },
   { data: 'attributes.2.value' },
   { data: 'attributes.3.value' },
   { data: 'attributes.4.value' }
]

将上述render方法用于您需要转换的每个列值。