2015-06-02 3 views
2

Я использую обработку на стороне сервера на данных, а одно из возвращаемых значений либо 0, либо 1 не хотят, чтобы данные для поиска или фильтрации на них, поэтому я делаю это в данных.Сделать datatables искать значение column.render вместо значения, возвращаемого с сервера

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

Кажется DataTables все еще ищет на возвращаемое значение ServerSide, но я хочу, чтобы произвести поиск по значениям, возвращаемым функцией визуализации выше. Существует несколько html, но в основном интересуются значениями в тегах Html. Как я могу это достичь?

+0

Почему вы не отключите сортировку/поиск в этом конкретном столбце, используя 'bSortable: false' и' bSearchable: false'? – Beginner

+0

@Beginner Я немного изменил вопрос. Может быть, это будет иметь больше смысла. Сортировка отлично работает, но поиск по-прежнему использует значения возвращенных серверов. –

+0

Отключите поиск этого столбца. – Beginner

ответ

1

Поскольку вы используете серверную обработку, поиск и заказ должны выполняться на стороне сервера.

Если вы используете PHP, вы можете использовать ssp.class.php, который доступен, когда вы download DataTables library.

С помощью 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 удалить кавычку.

+0

Это яркое решение, но будет ли пользовательский фильтр не лучше? Я думаю, если что-то изменится на клиенте - вам тоже нужно исправить сервер. Но +1. – davidkonrad

+0

@ davidkonrad, можете ли вы объяснить, что вы подразумеваете под пользовательскими фильтрами, [этот пример] (https://datatables.net/examples/plug-ins/range_filtering.html), может быть? Если да, я не думаю, что это возможно при обработке на стороне сервера. Не хватает ли более элегантного решения? –

+0

что-то вроде [этого] (http://stackoverflow.com/questions/29602026/jquery-datatables-to-exclude-rows-with-a-certain-class/29606275#29606275) Я ** мог ** дать ответ , но я доверяю Gyrocode :) – davidkonrad

 Смежные вопросы

  • Нет связанных вопросов^_^