2015-09-09 6 views
1

Я работаю над проектом, который использует плагин DataTables jQuery вместе с PHP и MySQL.DataTables Ajax Search

В настоящее время у меня есть таблица, которая извлекает данные через запрос AJAX и считывает ответ JSON.

$('#example1').dataTable({ 
     "processing": false, 
     "serverSide": true, 
     "pageLength": 10, 
     "bFilter": false, 
     "aaSorting": [[1,'desc']], 
     "columnDefs": [ 
     { "width": "10%", "targets": 0 }, 
     { "width": "100%", "targets": 1 }, 
     { "width": "220%", "targets": 2 }, 
     { "width": "130%", "targets": 3 }, 
     { "width": "180%", "targets": 4 } 
     ], 
     "responsive": true, 
     "dom": '<"top"<"clear">>rt<"bottom"p<"clear">>', 
     "ajax": "ajax.parser.php?ajax_request=assignmentlist", 
     "fnDrawCallback" : function(oSettings) { 
     var total_count = oSettings.fnRecordsTotal(); 
     var columns_in_row = $(this).children('thead').children('tr').children('th').length; 
     var show_num = oSettings._iDisplayLength; 
     var tr_count = $(this).children('tbody').children('tr').length; 
     var missing = show_num - tr_count; 
     if (show_num < total_count && missing > 0){ 
      for(var i = 0; i < missing; i++){ 
      $(this).append('<tr class="space"><td colspan="' + columns_in_row + '">&nbsp;</td></tr>'); 
      } 
     } 
     if (show_num > total_count) { 
      for(var i = 0; i < (total_count - tr_count); i++) { 
      $(this).append('<tr class="space"><td colspan="' + columns_in_row + '">&nbsp;</td></tr>'); 
      } 
     } 
     } 
    }); 

Я хотел бы, чтобы поместить смесь полей ввода и полей выбора в верхней части таблицы, чтобы передать в запрос AJAX, так что я могу выполнить поиск непосредственно в базе данных. Я не уверен, как это сделать с моим ограниченным знанием плагина.

То, что я хочу достичь, это что-то вроде этого:

https://datatables.net/examples/api/multi_filter_select.html

Однако это не показано, как выполнить действие, если источник данных является ответом JSON, и не позволяет мне контролировать параметры в полях выбора.

Заранее спасибо ...

ответ

0

Поскольку я использую V 1.10, функция несколько отличается, но я управлялся в правильном пути по @markpsmith

"ajax": { 
     "url": "ajax.parser.php?ajax_request=assignmentlist", 
     "data": { 
      "status": $('#myselect').val() 
     } 
     } 

Тогда в моей форме ...

<select id="myselect"> 
    <option val="1">1</option> 
    <option val="2">2</option> 
</select> 
0

используется fnServerParams для этого.

Вы можете добавить элементы управления фильтрацией, как обычно, например.

<select id="myselect"> 
    <option val="1">1</option> 
    <option val="2">2</option> 
</select> 

Включите это в DataTables код инициализации:

// Pass custom param to server 
"fnServerParams": function (aoData) { 
     aoData.push({ "name": "myparam1", "value": $('#myselect').val()}); 
} 

Этот пример принимает значение SelectItem из в SelectList с идентификатором myselect, и добавляет его в качестве параметра пользовательского запроса называется myparam1

Код вашей серверной части должен получить это значение из запроса Request.QueryString['myparam1'] и использовать его для фильтрации исходных данных. Чтобы добавить дополнительные пользовательские параметры, просто добавьте еще одну строку aoData.push в fnServerParams.