【问题标题】:JavaScript: Datatables serverside processing - change values before displayJavaScript:数据表服务器端处理 - 在显示之前更改值
【发布时间】:2015-10-02 07:43:47
【问题描述】:


为了在表格中显示我的数据,我使用了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)},

数据表插件有一些参数,我试过了,但我不确定它们是否能解决我的问题。这是插件文档中的一个示例:

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


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

【问题讨论】:

    标签: javascript jquery ajax datatables


    【解决方案1】:

    可以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 方法。

    【讨论】:

    • 谢谢,这正是我一直在寻找的 :-)
    • render 如果多列有多个显示逻辑,则部分变得多余
    猜你喜欢
    • 2012-05-19
    • 2016-08-31
    • 2021-10-11
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多