使数据表搜索column.render值而不是从服务器返回的值

时间:2015-06-02 08:00:11

标签: jquery datatables jquery-datatables datatables-1.10

我在数据表上使用服务器端处理,并且返回的值之一是01不希望数据表搜索或过滤这些数据,所以我在数据表中执行此操作。

  {"data":"Cycle.type", "targets":3, "render": function (data,type,full,meta) {
           return data == '0' ?'<td> Planning</td>' : '<td>Realization</td>';
   }}

似乎数据表仍在搜索返回的服务器端的值,但我希望它搜索上面的render函数返回的值。有一些HTML但我主要对Html标签中的值感兴趣。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

由于您正在使用服务器端处理,因此必须在服务器端进行搜索和排序。

如果您使用的是PHP,则可以使用download DataTables library时可用的ssp.class.php

使用ssp.class.php,您可以使用以下技巧和子查询来使数字字段可搜索。下面显示的只是一个简单的例子。

<?php

$table = <<<EOT
 (
    SELECT 
       field1, 
       field2, 
       (CASE WHEN type=0 THEN 'Planning' ELSE 'Realization' END) AS type
    FROM table
 ) temp
EOT;

$primaryKey = 'id';

$columns = array(
    array( 'db' => 'field1',  'dt' => 'field1' ),
    array( 'db' => 'field2',  'dt' => 'field2' ),
    array( 'db' => 'type',    'dt' => 'type' )
);

// SQL server connection information
$sql_details = array(
    'user' => '',
    'pass' => '',
    'db'   => '',
    'host' => ''
);

require( 'ssp.class.php' );

echo json_encode(
    SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);
?>

要使用该技巧,您还需要修改ssp.class.php并将FROM `$table`的所有实例替换为FROM $table以删除反引号。